다음과 같이 함수에 인수를 순서대로 넣는 방식을 위치 인수(positional argument)라고 한다.
>>> print(10, 20, 30)
10 20 30
def print_numbers(a, b, c):
print(a)
print(b)
print(c)
print_numbers(10, 20, 30)
10
20
30
이렇게 인수를 순서대로 넣을 때는 리스트나 튜플을 사용할 수 있다. 다음과 같이 리스트 또는 튜플 앞에 * (에스터리스크)를 붙여서 함수에 넣어주면 된다. 이때 함수의 매개변수 개수와 리스트의 요소 개수는 같아야 한다.
def print_numbers(a, b, c):
print(a)
print(b)
print(c)
x = [10, 20, 30]
print_numbers(*x)
10
20
30
위치 인수와 리스트 언패킹은 인수의 개수가 정해지지 않은 가변인수(variable argument)에 사용한다.
def print_numbers(*args):
for arg in args:
print(arg)
print_numbers(100)
print_numbers(1,2,3)
100
1
2
3
고정 인수와 가변 인수를 함께 사용할 수도 있다. 이대 가변인수가 가장 뒷쪽에 와야한다.
def print_numbers(a, *args):
print(a)
print(args)
print(100)
print(200, 1,2,3)
100
200 1 2 3
함수를 사용할 때 인수의 순서와 용도를 모두 기억해야 해서 불편하다. 파이썬에서는 인수의 순서와 용도를 매번 기억하지 않아도 키워드 인수(keyword argument)라는 기능을 제공한다. 이 기능은 말 그대로 인수에 이름(키워드)를 붙이는 기능인데 '키워드=값' 형식으로 사용한다. 이를 사용하면 키워드의 순서를 맞추지 않아도 된다.
print 함수에서 사용했던 sep , end 도 키워드 인수다.
def personal_info(name, age, address):
print("이름", name)
print("나이", age)
print("주소", address)
personal_info(name="홍길동", age=30, address="인천시 부평구 산곡동")