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개 필요하고 결과를 튜플 형태로 리턴 합니다.
>>> divmod(20, 3) (6, 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 -
'Tensorflow > Python' 카테고리의 다른 글
Python 기초 학습 8 파일 입력 출력 (0) | 2019.03.20 |
---|---|
Python 기초 학습 7 예외 처리 (0) | 2019.03.19 |
Python 기초 학습 6-1 함수 람다 (0) | 2019.03.16 |
Python 기초 학습 5 제어문 (0) | 2019.03.12 |
Python 기초 학습 4-2 자료구조 (튜플, 함수, 딕셔너리) (0) | 2019.03.09 |