중복된 부분들을 자동화하기 위해 만든 기능으로 입력값과 출력값을 갖는 동작의 블록을 말한다.
def fun_name(par1, par2):
(동작 내용)
return something
파이썬은 동적 타이핑 언어이므로 함수의 리턴 타입을 따로 지정하지 않고 def
키워드를 사용한다. void
형의 함수는 return
키워드를 쓰지 않으면 알아서 아무것도 리턴 안 한다.
# 파라미터 값에 따라서 함수 bar의 리턴타입이 float() 또는 int()가 된다.
def bar(b_var):
f_var = 1.2
i_var = 2
return f_var if b_var else i_var
def return_nothing(a):
a += 1
파라미터(인수 / 입력값)은 함수이름 뒤에 소괄호( ()
) 안에 타입명 없이 쉼표(,
)로 구분하여 넣는다. 하나 이상의 값을 리턴할 수 있다.
# tuple() 타입 값을 리턴한다
def foo(a, b):
return a + 1, b - 1
a, b = foo(a, b)
파라미터의 기본값은 parm_name=value
형식으로 지정할 수 있다. 디폴트 파라미터는 모든 파라미터의 뒤에 선언해야 한다.
def person(name, age, location=“Korea“):
print(name, end=' ')
print(age, end=' ')
print(location)
person("현욱", 21)
# 현욱 21 Korea
*args
, **kwargs
파이썬은 동적으로 인자를 받을 수 있다. *args
는 순서대로 인자를 받아 args
라는 이름의 리스트에 순서대로 넣어서 args[index]
형태로 호출 할 수 있다.
def printer(name, *args):
print(name, end=’, ’)
for i in range(len(args)):
print(args[i], end=" ")
printer("정연", 23, 168, 52, "서울")
# 정연, 23 168 52 서울
**kwargs
는 dic()
타입의 가변 개수 인수를 받을 수 있다.
def foo(**kwargs):
kw in kwargs:
print(kw + “: “ + kwargs[kw])
foo(item="bow", attack=23, level=12, rate=[1, 4, 5, 3])
# item: bow
# attack: 23
# level: 12
# rate: [1, 4, 5, 3]
람다는 이름 없는 함수를 만드는데 사용된다.
plus_ten = lambda x: x + 10
plus_ten(5)
# 15