6.3 내장 함수
앞의 예제에서 print 또는 del을
사용해 보았는데 이렇게 파이썬 내부에 정의되어 있는 함수를 내장 함수라 부릅니다. 그리고 내장 함수는 이미 존재하고 있는 함수로 import로 불러오지 않고 바로 호출해서 사용할 수 있는 함수 입니다.
함수는 이름만 잘 만들어도 반은 먹고 들어간다고 했는데 그 말이 사살인지 확인해 볼까요?
6.3.1 abs
음수, 양수 관계없이 단순히 크기만을 나타내기 때문에 음수를 양수로
변환 하는데 사용하기도 합니다.
>>> abs(3)
3
>>> abs(-3)
3
>>> abs(0.0002)
0.0002
>>> abs(-0.0002)
0.0002
|
6.3.2 all
자료형을 입력 받아 내부 요소가 모두 참이면 True를 리턴 하고
하나라도 거짓이 있으면 False를 리턴 합니다.
>>> all([1,2,3])
True
>>> all([4,5,1,3])
True
>>> all([4,5,1,0,3])
False
>>> all(('a', 'b', 'c'))
True
>>> all(('a', 'b', 'c', ''))
False
|
6.3.3 any
자료형을 입력 받아 내부 요소가 모두 거짓이면 False를 리턴 하고
하나라도 참이 있으면 True를 리턴 합니다.
>>> any([4,5,1,0,3])
True
>>> any(('', 0))
False
|
6.3.4 chr
아스키(ASCII) 코드값을 입력 받아 문자를 출력 합니다.
# 10 진수
>>> chr(112)
'p'
>>> chr(80)
'P'
# 16 진수
>>> chr(0x50)
'P'
>>> chr(0x70)
'p'
|
6.3.5 dir
dir는 입력 받은 객체에 대해 사용할 수 있는 변수와 메소드를 나열해
줍니다.
입력값이 숫자인 경우
>>> dir(1)
['__abs__', '__add__', '__and__', '__bool__',
'__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__',
'__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__',
'__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__',
'__init__', '__init_subclass__', '__int__', '__invert__', '__le__',
'__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__',
'__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__',
'__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__',
'__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__',
'__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__',
'__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__',
'__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator',
'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
|
입력값이 문자인 경우
>>> dir('a')
['__add__', '__class__', '__contains__',
'__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__',
'__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__',
'__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__',
'__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__',
'__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__',
'__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode',
'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum',
'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric',
'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower',
'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust',
'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith',
'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
|
6.3.6 divmod
함수 명에서도 알 수 있듯이 나눗셈의 몫과 나머지를 구하는 함수 입니다. 숫자가 2개 필요하고 결과를
튜플 형태로 리턴 합니다.
6.3.7 enumerate
리스트, 튜플, 문자열등을
입력 받아 인텍스와 함꼐 리턴 합니다.
>>> a = [1, 2, 3, 4, 5]
>>> for i, n in enumerate(a):
... print(i,
n)
...
0 1
1 2
2 3
3 4
4 5
|
6.3.8 eval
문자열을 명령어로 변환 하고 실행합니다. 변환된 명령어가 실행할 수 없으면 오류가 발생 합니다.
# 오류 발생
>>> eval('a' + 'b')
Traceback (most recent call last):
File
"<stdin>", line 1, in <module>
File
"<string>", line 1, in <module>
NameError: name 'ab' is not defined
# 정상 작동
>>> ab = 555
>>> eval('a' + 'b')
555
|
6.3.9 filter
filter(function, iterable)형태로 iterable 값들을 function을 통해 필터링 하여 결과 값을
반환 합니다. function에 어떤 조건의 데이터만 추출 하는지 정의가 되어야 합니다.
>>> def is_even(x):
... if x %
2 == 0:
...
return True
... else:
...
return False
...
>>> r = filter(is_even, [1,2, 3, 4, 5,
6,7])
>>>
>>> for i in r:
...
print(i)
...
2
4
6
|
lambda도 함수와 같은 역할을 하고 반복 사용하지 않는다고 했는데
기억하시나요.
>>> r2 = list(filter(lambda x : x % 2 ==
0,[1,2, 3, 4, 5, 6,7]))
>>> r2
[2, 4, 6]
|
6.3.10 hex
정수를 입력 받아 16진수를 리턴 합니다.
>>> hex(5)
'0x5'
>>> hex(10)
'0xa'
>>> hex(15)
'0xf'
|
6.3.11 id
입력된 객체의 주소값을 리턴 합니다.
>>> a = 'a'
>>> b = a
>>> id(a)
2998919036464
>>> id('a')
2998919036464
>>> id(b)
2998919036464
# a 값 변경
>>> a = 'b'
>>> id(a)
2998919034784
>>> id(b)
2998919036464
|
a, b, ‘a’는 모두 같은 주소를 바라보고 있습니다. a 값을 변경하면 a만 다른 주소를 바라보게 됩니다.
6.3.12 input
사용자로부터 입력값을 받아야 하는 경우 사용하며 input([prompt])를
이용하여 콘솔 창에 프롬프트가 나타나도록 할 수 있습니다.
>>> x = input()
Y
>>> x = input("계속 진행 하시겠습니까?(Y/N) :")
계속 진행 하시겠습니까?(Y/N) :Y
>>> x
'Y'
|
6.3.13 int
정수 형태의 문자나 정수, 실수 등을 입력 받아 정수를 반환 합니다. 반올림은 하지 않고 실수 형태의 문자는
오류가 발생 합니다.
>>> int('30')
30
>>> int('-45')
-45
>>> int(3.5444)
3
>>> int(-4.99999)
-4
>>> int('8.9999')
Traceback (most recent call last):
File
"<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10:
'8.9999'
|
다른 진수의 값을 10진수로 반환 합니다.
# 2진수 -> 10진수
>>> int('011', 2)
3
# 16진수 -> 10진수
>>> int('0xA', 16)
10
|
6.3.14 isinstance
isinstance(object, type) 형태로 사용하며 object가 type의 인스턴스 인가 확인하여 참이면 True, 거짓이면 False를 반환 합니다. type에는 복수의 데이터 형, 클래스 등이 포함될 수 있습니다.
# 정수가 정수냐?
>>> isinstance(3, int)
True
# 실수가 정수냐?
>>> isinstance(3.0, int)
False
# 실수가 정수 또는 실수냐?
>>> isinstance(3.0, (int, float))
True
# 클래스가 클래스냐?
>>> class OneClass:
... a =
'aaa'
...
>>> b = OneClass()
>>> c = isinstance(b, OneClass)
>>> c
True
|
6.3.15 len
문자열의 길이 또는 요소의 개수를 리턴 합니다. 숫자의 개수는 구하지 못합니다.
>>> len('abcdefg')
7
>>> len([1, 2, 3, 4])
4
>>> len(['a', 'b', 'cc'])
3
>>> len((1, 2, 3, 4, 5))
5
>>> len(123)
Traceback (most recent call last):
File
"<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
|
6.3.16 list
데이터를 입력 받아 list로 반환 합니다.
>>> list('abcdefg')
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> list([1,2,3,4,5])
[1, 2, 3, 4, 5]
>>> list((1,2,3,4,5))
[1, 2, 3, 4, 5]
|
6.3.17 map
map(function, iterator)형태로 iterator의 요소들을 하나씩 function에 적용하여 값을
리턴 받아 옵니다.
>>>
>>> def addFunc(n):
... return
n + n
...
>>> nums = (1, 2, 3, 4, 5)
>>> res = map(addFunc, nums)
>>> print(list(res))
[2, 4, 6, 8, 10]
|
lambda를 이용하여 function을
대체할 수 있습니다.
>>> nums = (1, 2, 3, 4, 5)
>>> result = map(lambda x: x + x, nums)
>>> print(list(result))
[2, 4, 6, 8, 10]
|
6.3.18 max
입력된 값 중 최대 값을 반환 합니다. 문자와 숫자는 비교할 수 없습니다.
>>> max("PYTHON python")
'y'
>>> max([1, 2, 3, 4.5])
4.5
|
6.3.19 min
입력된 값 중 최소 값을 반환 합니다. 문자와 숫자는 비교할 수 없고
문자 보다 blank가 작은 값입니다.
>>> min("PYTHON python")
' '
>>> min([1, 2, 3, 4.5])
1
|
6.3.20 oct
정수를 입력 받아 8진수로 변환 하여 리턴 합니다.
>>> oct(8)
'0o10'
>>> oct(10)
'0o12'
|
6.3.21 open
open(filename, [mode])의 형태로 filename의 파일을 오픈 합니다. 오픈 하는 조건은 mode에
따라 달라집니다. 모드가 생략
되면 읽기 모드로 오픈 합니다.
f = open(“test_file”, “r”)
|
6.3.22 ord
문자를 입력 받아 ASCII 코드의
10진수 번호로 리턴 합니다. chr()와 반대 개념입니다.
>>> ord('a')
97
>>> ord('A')
65
|
6.3.23 pow
pow(x, y)는 x의
값을 y만큼 제곱한 결과를 리턴 합니다.
>>> pow(2, 3)
8
>>> pow(3, 3)
27
|
6.3.24 range
range([start,] stop [,step])의 형태로 일련
번호를 리턴 하며 인수가 하나, 둘, 셋 모두 선택적으로
사용 가능 합니다.
- 인수가 하나인 경우
0 부터 stop 보다
작으며 1씩 증가 하는 값. (0 <= list <
stop)
>>> range(10)
range(0, 10)
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
|
- 인수가 둘 경우
start 부터 stop 보다
작으며 1씩 증가 하는 값. (start <= list <
stop)
>>> range(5, 10)
range(5, 10)
>>> list(range(5, 10))
[5, 6, 7, 8, 9]
|
- 인수가 셋 경우
start 부터 stop 보다
작으며 step씩 증가 하는 값. (start <= list
< stop)
. >>> range(5, 10, 2)
range(5, 10, 2)
>>> list(range(5, 10, 2))
[5, 7, 9]
|
6.3.25 round
round(number[, ndigits])의 형태로 자릿수가 생략
되면 반올림 한 값을 리턴하고 자릿수가 입력 되면 정해진 자릿수 까지 반올림 된 값으로 표현 합니다.
>>> round(3.5)
4
>>> round(4)
4
>>> round(4.55555, 3)
4.556
|
6.3.26 sorted
입력값을 정렬하여 리턴 하는 함수 입니다.
>>> sorted("python")
['h', 'n', 'o', 'p', 't', 'y']
>>> sorted(['a', 'd', 'b', 'k', 'c'])
['a', 'b', 'c', 'd', 'k']
>>> sorted([5,7,2,4,6,8])
[2, 4, 5, 6, 7, 8]
>>> sorted([5,7,2,4,6,8,2])
[2, 2, 4, 5, 6, 7, 8]
>>> sorted((5,7,2,4,6,8,2))
[2, 2, 4, 5, 6, 7, 8]
|
6.3.27 str
입력 받은 값을 문자열 형태로 반환 합니다. 숫자를 문자와 결합 할 수 있습니다.
>>> str(123)
'123'
>>> str(345) + "abc"
'345abc'
>>> str("python".upper())
'PYTHON'
|
6.3.28 sum
입력된 값을 모두 더한 합을 리턴 합니다.
>>> sum((1, 2, 3))
6
>>> sum([1, 2, 3])
6
|
6.3.29 tuple
입력된 값을 튜플로 형변환 하여 반환 합니다.
>>> tuple("python")
('p', 'y', 't', 'h', 'o', 'n')
>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple(('a', 'b', 'c'))
('a', 'b', 'c')
|
6.3.30 type
입력 값의 자료형을 리턴 합니다.
>>> type('a')
<class 'str'>
>>> type(1)
<class 'int'>
>>> type([])
<class 'list'>
|
6.3.31 zip
반복형 데이트를 튜플 형태의 쌍으로 묶어 리턴 합니다.
>>> a = [1, 2, 3, 4, 5]
>>> b = ['a', 'b', 'c', 'd', 'e']
>>> for i in zip(a, b):
...
print(i)
...
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')
>>> list(zip(a, b))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
|
서로 쌍의 개수가 맞지 않으면 작은 요소의 수에 맞줍니다.
>>> a = [1, 2, 3, 4, 5]
>>> b = ['a', 'b', 'c', 'd']
>>> list(zip(a, b))
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd')]
|
- copy coding -