핵심 정리
함수
함수는 자주 사용하는 코드를 한 곳에 모아 놓은 것을 뜻합니다.
def 함수이름(): # 함수 만들기 코드 함수() # 함수 호출
함수를 호출할 때 함수 안에 넣는 값을 인수라고 하며 인수는 매개변수를 통해서 사용할 수 있습니다. 그리고 함수가 호출된 뒤 함수 안에서 나오는 값을 반환값이라고 하며 반환값은 함수 안에서 return으로 반환합니다.
def 함수이름(매개변수1, 매개변수2): # 매개변수 지정 return 반환값 # 함수에서 값 반환 변수 = 함수(인수1, 인수2) # 함수에 인수를 넣어서 호출한 뒤 함수의 반환값을 변수에 저장
매개변수와 인수
함수 바깥에서 전달받은 값이 저장되는 변수를 매개변수라고 부릅니다.
def add(a, b): # a와 b가 매개변수 return a + b
함수를 호출할 때 전달하는 값이나 변수를 인수라고 부릅니다.
add(10, 20) # 10과 20이 인수
함수에서 값을 여러 개 반환하기
함수에서 값을 여러 개 반환할 때는 return에 값이나 변수를 ,(콤마)로 구분해서 지정합니다. 이렇게 하면 반환값을 변수 여러 개에 저장할 수 있습니다.
def 함수이름(매개변수): return 반환값1, 반환값2 # 값을 여러 개 반환 변수1, 변수2 = 함수(인수) # 반환값을 변수 여러 개에 저장
위치 인수
함수에 인수를 순서대로 넣는 방식을 위치 인수라고 합니다. 위치 인수를 사용하는 함수는 리스트(튜플) 앞에 *(애스터리스크)를 붙여서 리스트 언패킹으로 넣을 수 있습니다.
def 함수이름(매개변수1, 매개변수2): # 위치 인수를 사용하는 함수 코드 함수(*리스트) # 리스트 언패킹 함수(*튜플) # 튜플 언패킹
위치 인수를 사용하는 가변 인수 함수는 매개변수 앞에 *를 붙여서 만듭니다.
def 함수이름(*매개변수): # 위치 인수를 사용하는 가변 인수 함수 코드 함수(인수1, 인수2) # 인수 여러 개를 직접 넣기 함수(*리스트) # 리스트 언패킹 함수(*튜플) # 튜플 언패킹
키워드 인수
함수에 넣는 인수에 이름(키워드)를 붙이는 방식을 키워드 인수라고 합니다. 키워드 인수는 딕셔너리 앞에 **(애스터리스크 두 개)를 붙여서 딕셔너리 언패킹으로 넣을 수 있습니다.
함수(키워드1=값1, 키워드2=값2) # 함수를 키워드 인수 방식으로 호출 함수(**딕셔너리) # 딕셔너리 언패킹
키워드 인수를 사용하는 가변 인수 함수는 매개변수 앞에 **를 붙여서 만듭니다.
def 함수이름(**매개변수): # 키워드 인수를 사용하는 가변 인수 함수 코드 함수(키워드1=값1, 키워드2=값2) # 키워드 인수를 직접 넣기 함수(**딕셔너리) # 딕셔너리 언패킹
매개변수의 초깃값
함수를 만들 때 매개변수에 초깃값을 지정하면 함수를 호출할 때 해당 인수를 비워두고 호출할 수 있습니다.
def 함수이름(매개변수=값): # 매개변수에 초깃값 지정 코드 함수() # 매개변수에 초깃값이 있으므로 인수를 비워두고 호출
함수의 재귀호출
함수 안에서 함수 자기자신을 호출하는 방식을 재귀호출이라 합니다.
def factorial(n): # 재귀호출로 팩토리얼을 구하는 함수 if n == 1: # n이 1일 때 return 1 # 1을 반환하고 재귀호출을 끝냄 return n * factorial(n - 1) # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
재귀호출은 반드시 종료 조건을 만들어주어야 합니다. 종료 조건이 없으면 함수가 계속 호출되다가 RecursionError 에러가 발생합니다.