파이썬은 우리가 항상 사용할 수 있는 함수들을 상당히 많이 제공합니다. 이들은 우리가 프로그램을 작성하는데 든든한 도구가 되어줄 것입니다.
이들 함수들을 이용하면 프로그램을 훨씬 쉽게 작성할 수 있습니다.
파이썬에 내장된 함수들을 아래 표에 나열하였습니다. 이들 함수들은 import 문장으로 포함시킬 필요가 없습니다. 언제든지 사용할 수 있는 것입니다.
그리고 대부분의 객체에 대해서도 사용이 가능합니다. 우리는 많이 사용되는 함수만을 살펴볼 것입니다.
하지만 학습하지 않은 함수라고 하더라고 함수의 이름만 보면 어떤 기능을 하는지 추측할 수 있을 것입니다.
| abs() | dict() | help() | min() | setattr() |
| all() | dir() | hex() | next() | slice() |
| any() | divmod() | id() | object() | sorted() |
| ascii() | enumerate() | input() | oct() | staticmethod() |
| bin() | eval() | int() | open() | str() |
| bool() | exec() | isinstance() | ord() | sum() |
| bytearray() | filter() | issubclass() | pow() | super() |
| bytes() | float() | iter() | print() | tuple() |
| callable() | format() | len() | property() | type() |
| chr() | frozenset() | list() | range() | vars() |
| classmethod() | getattr() | locals() | repr() | zip() |
| compile() | globals() | map() | reversed() | __import__() |
| complex() | hasattr() | max() | round() | |
| delattr() | hash() | memoryview() | set() |
x의 절대값을 반환합니다. 인수는 정수나 부동소수점수, 복소수가 가능합니다. 복소수 x + yj인 경우에는 sqrt(x ** 2 + y ** 2) 의 값을 반환합니다.
print(abs(-3))
print(abs(3 + 4j))
<실행 결과>
3
5.0
iterable의 모든 요소가 참이면 all(iterable)의 반환값도 참이 됩니다. 아래와 같은 코드와 동일합니다.
def all(iterable):
for element in iterable:
if not element:
return False
return True
iterable의 요소 중에서 하나라도 참이면 any(iterable)의 반환값도 참이 됩니다. 아래와 같은 코드와 동일합니다.
def any(iterable):
for element in iterable:
if element:
return True
return False
x를 부울형으로 변환하여 반환합니다. 예를 들어 정수 0은 False가 되고 정수 1은 True로 변환됩니다.
items = ["", "a string", 0, 1, [], {}]
for i in items:
print(i, bool(i))
<실행 결과>
False
a string True
0 False
1 True
[] False
{} False
아스키 코드값이 i인 문자를 반환합니다. i는 0에서 255 사이어야 합니다. chr()은 ord() 함수의 역함수나 마찬가지입니다. ord() 함수는 문자를 받아서 아스키 코드값을 반환합니다.
print(chr(65))
print(ord('A'))
<실행 결과>
A
65
filename 파일로부터 source 문자열을 읽어서 컴파일하여 코드 객체를 생성합니다. 생성된 코드 객체는 나중에 eval()이나 exec()을 사용하여 실행될 수 있습니다.
with open('mymodule.py') as f:
lines = f.read()
code_obj = compile(lines, 'mymodule.py', 'exec')
exec(code_obj)
복소수를 표현하는 객체를 생성하는 함수입니다. real + imag * j 형식의 복소수가 반환됩니다.
x = complex(4, 2)
print(x)
<실행 결과>
(4+2j)
dir은 객체가 가지고 있는 변수나 함수를 보여 줍니다. 예를 들어서 리스트 객체가 가지고 있는 변수와 함수를 출력해보면 다음과 같습니다.
print(dir([1, 2, 3]))
<실행 결과>
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
우리는 리스트 객체가 제공하는 append(), count()와 같은 함수를 볼 수 있습니다. 파이썬이 내부적으로 사용하는 함수는 앞에 __가 붙어 있습니다.
dir 함수는 어떤 객체에서 사용할 수 있는 함수들이 무엇인지를 알고 싶을 때 유용합니다. 함수에 대한 설명을 출력하려면 help()를 호출합니다.
예를 들어서 append() 함수의 도움말을 출력하려면 아래와 같이 합니다.
help([1, 2, 3].append)
<실행 결과>
Help on built-in function append:
append(...) method of builtins.list instance
L.append(object) -> None -- append object to end
두 개의 숫자 x, y를 입력 받아 x/y의 몫과 나머지를 튜플의 형태로 반환합니다. 정수 객체에 대해서는 (a // b, a % b)와 동일합니다.
print(divmod(10, 3))
<실행 결과>
(3, 1)
시퀀스 객체를 입력 받아 이뉴머레이트(enumerate) 객체를 반환합니다. 이뉴머레이트 객체는 첫 번째 요소로 번호, 두 번째 요소로 번호에 해당되는 값을 갖는 객체입니다.
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
print(list(enumerate(seasons)))
for i, str in enumerate(["aaa", "bbb", "ccc"]):
print(i, str)
<실행 결과>
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
0 aaa
1 bbb
2 ccc
eval()은 파이썬의 수식을 문자열로 받아서 실행하고 그 결과를 반환합니다. eva()은 "수식을 평가(계산)하다" 라는 의미인 evaluate의 준말입니다.
예를 들어서 eval("print('Hi')")은 print('Hi!')을 실행합니다.
print(eval("1+2"))
x = 1
y = 1
print(eval('x+y'))
eval("print('Hi!')")
<실행 결과>
3
2
Hi!
eval() 함수는 사용자가 입력하는 파이썬의 수식을 실행할 때 사용됩니다. 예를 들어서 사용자로부터 파이썬 수식을 받아서 바로 실행할 수 있습니다.
exp = input("파이썬의 수식을 입력하세요 : ")
print(eval(exp))
<실행 결과>
파이썬의 수식을 입력하세요 : 2 ** 10
1024
eval() 함수는 파이썬 인터프리터 쉘에 정의된 전역 변수를 사용할 수 있습니다.
x = 10
y = 5
print(eval('x+y'))
<실행 결과>
15
exec() 함수는 수식뿐만 아니라 모든 파이썬 문장을 받아서 실행합니다. eval() 함수는 값을 반환하지만 exec() 함수는 값을 반환하지 않습니다.
이 기능을 매우 유용하게 사용될 수 있습니다.
exec("y = 2 + 3")
print(y)
<실행 결과>
5
statements = '''
import math
def area_of_circle(radius):
return math.pi * radius * radius
'''
exec(statements)
print(area_of_circle(5))
<실행 결과>
78.53981633974483
exec() 함수는 어디에 사용할 수 있을까요? 예를 들어서 파일에 저장된 파이썬 프로그램을 읽어들여서 실행할 때 사용할 수 있습니다.
exec() 함수의 실행 시간이 많이 걸린다면 다음과 같이 compile() 함수를 이용하여 컴파일하여 코드 객체를 생성해 놓을 수 있습니다.
code_obj = compile("print(x)", "", "exec")
x = 10
exec(code_obj)
x = 20
exec(code_obj)
<실행 결과>
10
20
float() 함수는 문자열을 부동소수점수로 변환하는 기능을 합니다. 예를 들어서 사용자가 입력한 "12.345" 를 부동소수점수 12.345로 변환합니다.
str = input("실수를 입력하세요 : ")
print(str)
value = float(str)
print(value)
<실행 결과>
실수를 입력하세요 : 12.345
12.345
12.345
우리가 자주 이용했던 함수입니다. 문자열을 정수로 변환하는 함수입니다.
len() 함수는 객체의 길이를 계산하여 반환하는 함수입니다. 예를 들어서 문자열의 길이를 계산하는데 len()을 사용할 수 있습니다.
print(len("이 밤이 지나면 우린 또다시 헤어져야 하는데"))
<실행 결과>
24
리스트에 len() 을 사용하면 리스트 안에 있는 항목의 개수를 반환합니다.
print(len([1, 2, 3, 4, 5]))
<실행 결과>
5
딕셔너리나 튜플에서도 항목의 개수를 반환합니다. len() 함수는 특히 반복문에서 편리하게 사용할 수 있습니다.
시퀀스 객체를 받아서 리스트로 변환하는 함수입니다. 예를 들어서 문자열을 list()에 전달하면 각각의 문자들을 포함하는 리스트 객체가 반환됩니다.
print(list("seulgi"))
<실행 결과>
['s', 'e', 'u', 'l', 'g', 'i']
max() 함수는 리스트나 튜플, 문자열에서 가장 큰 항목을 반환합니다. 예를 들어서 정수의 리스트에서 가장 큰 정수를 찾을 때 사용할 수 있습니다.
min()은 가장 작은 정수를 반환합니다.
values = [1, 2, 3, 4, 5]
print(max(values))
print(min(values))
<실행 결과>
5
1
문자열의 경우에는 아스키 코드가 큰 순으로 반환됩니다.
print(max('irene', 'seulgi', 'wendy', 'joy', 'yeri'))
<실행 결과>
yeri
range() 함수도 우리가 이제까지 많이 이용하였던 함수입니다. ragne() 함수는 숫자들을 만드는 함수입니다. range() 함수는 다음과 같은 형식을 가지고 있습니다.
range 함수는 이터레이터 객체를 반환합니다. 이것을 리스트로 변환하려면 아래와 같이 합니다.
print(list(range(5)))
<실행 결과>
[0, 1, 2, 3, 4]
iterable 객체 안에 들어 있는 항목들로부터 정렬된 리스트를 생성하여 반환합니다. 정렬에 관해서는 다음 절을 참조하시기 바랍니다.
print(sorted([5, 2, 3, 1, 4]))
<실행 결과>
[1, 2, 3, 4, 5]
sum() 함수도 무척이나 유용한 함수입니다. sum() 함수는 리스트에 존재하는 항목들을 전부 더하여 합계를 반환합니다.
print(sum([5, 2, 3, 1, 4]))
<실행 결과>
15