Python 기초

내장 함수

파이썬은 우리가 항상 사용할 수 있는 함수들을 상당히 많이 제공합니다. 이들은 우리가 프로그램을 작성하는데 든든한 도구가 되어줄 것입니다.

이들 함수들을 이용하면 프로그램을 훨씬 쉽게 작성할 수 있습니다.

 

파이썬에 내장된 함수들을 아래 표에 나열하였습니다. 이들 함수들은 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()  

 

abs(x) 함수

x의 절대값을 반환합니다. 인수는 정수나 부동소수점수, 복소수가 가능합니다. 복소수 x +  yj인 경우에는 sqrt(x ** 2 + y ** 2) 의 값을 반환합니다.

print(abs(-3))
print(abs(3 + 4j))

 

<실행 결과>

3
5.0

 

all(iterable)

iterable의 모든 요소가 참이면 all(iterable)의 반환값도 참이 됩니다. 아래와 같은 코드와 동일합니다.

def all(iterable):
    for element in iterable:
        if not element:
            return False

    return True

 

any(iterable)

iterable의 요소 중에서 하나라도 참이면 any(iterable)의 반환값도 참이 됩니다. 아래와 같은 코드와 동일합니다.

def any(iterable):
    for element in iterable:
        if element:
            return True

    return False

 

bool(x) 함수

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

 

chr(i) 함수

아스키 코드값이 i인 문자를 반환합니다. i는 0에서 255 사이어야 합니다. chr()은 ord() 함수의 역함수나 마찬가지입니다. ord() 함수는 문자를 받아서 아스키 코드값을 반환합니다.

print(chr(65))
print(ord('A'))

 

<실행 결과>

A
65

 

compile(source, filename, mode) 함수

filename 파일로부터 source 문자열을 읽어서 컴파일하여 코드 객체를 생성합니다. 생성된 코드 객체는 나중에 eval()이나 exec()을 사용하여 실행될 수 있습니다.

with open('mymodule.py') as f:
    lines = f.read()

code_obj = compile(lines, 'mymodule.py', 'exec')
exec(code_obj)

 

  • source : 문자열이나 바이트 문자열이 될 수 있습니다.
  • filename : 코드가 읽혀진 파일 이름입니다.
  • mode : 컴파일되는 코드의 종류를 지정합니다.
    • 'exec' : source가 문장들로 되어 있을 때입니다.
    • 'eval' : source가 하나의 수식일 때입니다.
    • 'single' : source가 하나의 상호작용적인 문장일 때입니다.

 

complex(real, imag) 함수

복소수를 표현하는 객체를 생성하는 함수입니다. real + imag * j 형식의 복소수가 반환됩니다.

x = complex(4, 2)
print(x)

 

<실행 결과>

(4+2j)

 

dir 함수

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

 

divmod() 함수

두 개의 숫자 x, y를 입력 받아 x/y의 몫과 나머지를 튜플의 형태로 반환합니다. 정수 객체에 대해서는 (a // b, a % b)와 동일합니다.

print(divmod(10, 3))

 

<실행 결과>

(3, 1)

 

enumerate(iterable, start = 0) 함수

시퀀스 객체를 입력 받아 이뉴머레이트(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() 함수

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" 을 입력했을 때
파이썬의 수식을 입력하세요 : 2 ** 10
1024

 

eval() 함수는 파이썬 인터프리터 쉘에 정의된 전역 변수를 사용할 수 있습니다.

x = 10
y = 5
print(eval('x+y'))

 

<실행 결과>

15

 

exec() 함수

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() 함수

float() 함수는 문자열을 부동소수점수로 변환하는 기능을 합니다. 예를 들어서 사용자가 입력한 "12.345" 를 부동소수점수 12.345로 변환합니다.

str = input("실수를 입력하세요 : ")
print(str)

value = float(str)
print(value)

 

<실행 결과>

실수를 입력하세요 : 12.345
12.345
12.345

 

int() 함수

우리가 자주 이용했던 함수입니다. 문자열을 정수로 변환하는 함수입니다.

 

len() 함수

len() 함수는 객체의 길이를 계산하여 반환하는 함수입니다. 예를 들어서 문자열의 길이를 계산하는데 len()을 사용할 수 있습니다.

print(len("이 밤이 지나면 우린 또다시 헤어져야 하는데"))

 

<실행 결과>

24

 

리스트에 len() 을 사용하면 리스트 안에 있는 항목의 개수를 반환합니다.

print(len([1, 2, 3, 4, 5]))

 

<실행 결과>

5

 

딕셔너리나 튜플에서도 항목의 개수를 반환합니다. len() 함수는 특히 반복문에서 편리하게 사용할 수 있습니다.

 

list() 함수

시퀀스 객체를 받아서 리스트로 변환하는 함수입니다. 예를 들어서 문자열을 list()에 전달하면 각각의 문자들을 포함하는 리스트 객체가 반환됩니다.

print(list("seulgi"))

 

<실행 결과>

['s', 'e', 'u', 'l', 'g', 'i']

 

max() 함수

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([start], stop, [step]) 함수

range() 함수도 우리가 이제까지 많이 이용하였던 함수입니다. ragne() 함수는 숫자들을 만드는 함수입니다. range() 함수는 다음과 같은 형식을 가지고 있습니다.

  • start : 시작 숫자
  • stop : 종료 숫자, 하지만 종료 숫자는 포함되지 않습니다.
  • step : 증가값

range 함수는 이터레이터 객체를 반환합니다. 이것을 리스트로 변환하려면 아래와 같이 합니다.

print(list(range(5)))

 

<실행 결과>

[0, 1, 2, 3, 4]

 

sorted(iterable, [key], [reverse]) 함수

iterable 객체 안에 들어 있는 항목들로부터 정렬된 리스트를 생성하여 반환합니다. 정렬에 관해서는 다음 절을 참조하시기 바랍니다.

print(sorted([5, 2, 3, 1, 4]))

 

<실행 결과>

[1, 2, 3, 4, 5]

 

sum() 함수

sum() 함수도 무척이나 유용한 함수입니다. sum() 함수는 리스트에 존재하는 항목들을 전부 더하여 합계를 반환합니다.

print(sum([5, 2, 3, 1, 4]))

 

<실행 결과>

15