함수(function) : 어떤 일을 수행하는 코드의 덩어리, 또는 코드의 묶음
함수의 장점
- 필요할 때마다 호출 가능
- 논리적인 단위로 분할 가능
- 코드의 캡슐화
함수의 선언
def 함수 이름 (매개변수 #1 ...):
수행문 1
수행문 2
return <반환값>
*def : 'definition'의 줄임말로, 함수를 정의하여 시작한다는 의미
*매개변수(parameter) : 함수에서 입력값으로 사용하는 변수를 의미하며, 1개 이상의 값을 적을 수 있다.
*수행문 : 수행문은 반드시 들여쓰기한 후 코드를 입력해야 한다. 수행해야 하는 코드는 일반적으로 작성하는 코드와 같다. if나 for 같은 제어문을 사용할 수도 있고, 고급 프로그래밍을 하게 되면 함수 안에 사용하기도 한다.
예제
# 사각형의 넓이 구하는 함수
def calculate_rectangle_area(x,y):
return x*y
x = 10
y = 20
print("사각형의 x의 길이: ",x)
print("사각형의 y의 길이: ",y)
# 넓인를 구하는 함수 호출
print("사각형의 넓이: ",calculate_rectangle_area(x,y))
함수의 실행 순서 확인하기
# 함수의 실행 순서 알아보기
def f(x):
return 2*x+7
def g(x):
return x**2
x = 2
print(f(x)+g(x)+f(g(x))+g(f(x)))
# print( 11, 4, 15, 121) 로 치환되어 결과가 나오는 것을 확인할 수 있다.
함수의 인수
키워드 인수(keyword arguments) : 함수에 입력되는 매개변수의 변수명을 사용하여 함의 인수를 지정하는 방법이다.
# keyword arguments
def print_name(my_name, your_name):
print("Hello {0},My name is {1}".format(your_name,my_name))
print_name("Lee","Hell") # 매개변수 순서대로 대입
print_name(your_name="Hell", my_name="Lee") # 매개변수의 이름에 직접 대입
디폴트 인수(default arguments) : 매개변수에 기본값을 지정하여 사용하고, 아무런 값도 인수로 넘기지 않으면 지정된 기본값을 사용하는 방식
# default arguments
def print_name(my_name, your_name="Hell"):
print("Hello {0}, My name is {1}".format(your_name,my_name))
print_name("Lee","Hell")
print_name("Lee")
함수의 매개변수가 개수가 정해지지 않고 진행해야 하는 경우가 있다. 이때 사용하는 것이 바로 가변 인수(variable-length arguments)다.
가변 인수는 *(asterisk)로 표현할 수 있는데, *는 파이썬에서 기본적으로 곱셈 또는 제곱 연산 외에도 변수를 묶어 주는 가변 인수를 만든다.
# 가변 인수
def asterisk_test(a,b,*args): # 변수 a,b를 받고 나머지는 * args로 받는다.
return a + b + sum(args) # args는 가변 인수
print(asterisk_test(1,2,3,4,5)) # 1,2,3,4,5에서 1과 2는 각각 a와 b에 할당되고
# 나머지 인수인 3,4,5가 *args에 할당된다.
키워드 가변 인수
# 키워드 가변 인수
def kwargs_test(**kwargs):
print(kwargs) # **kwargs 에 first = 1, second = 2, third = 3
print("First value is {first}".format(**kwargs))
print("Second value is {second}".format(**kwargs))
print("Third value is {third}".format(**kwargs))
kwargs_test(first = 1, second = 2 , third = 3) # 각각 1,2,3