- 함수에 대한 기본적인 사용방법은 이미 알고 있으니 생략.
- 위치 인수와 키워드 인수, 언패킹에 대해서 정리.
- 함수에 넘기는 매개변수는 변수 단위로 넘길 수도 있지만, 리스트나 튜플 단위로 넘길 수도 있다.
또는 고정되어 있지 않고 가변한 갯수로 인수를 넘길 수도 있다.
1. 가변 인수와 언패킹
def print_numbers(*args):
for x in args:
print(x)
print_numbers(10,20,30)
print_numbers(10,20,30,40)
myNum = [40,50,60]
print_numbers(*myNum)
- print_numbers 함수에 여러 인자들을 넘길 때, 상황에 따라 인수의 갯수가 가변적일 수 있다.
- 위와 같이 print_numbers 함수에 *args를 인자로 받으면 함수 내에서 자연스럽게 튜플 형태로
인자들을 받아 처리하게 만들 수 있다.
- 또는 리스트나 튜플을 바로 넘겨서 함수 안에서 쓸 수 있게 만드는 것을 Unpacking이라고 한다.
2. 키워드 인수
def personal_info(name, age, address):
print('이름: ', name)
print('나이: ', age)
print('주소: ', address)
personal_info(age = 29, name = "문성호", address = "인천")
- 키워드 인수는 인수의 순서와 용도를 매번 기억하지 않아도 되게끔 하는 기능.
- 위 예와 같이 인수가 name, age, address라고 하더라도, 실제 함수를 호출할 때는
이름만 밝혀준다면 순서를 엇갈려도 된다.
3. 딕셔너리 언패킹
def personal_info(**kwargs):
if 'name' in kwargs: # in으로 딕셔너리 안에 특정 키가 있는지 확인
print('이름: ', kwargs['name'])
if 'age' in kwargs:
print('나이: ', kwargs['age'])
if 'address' in kwargs:
print('주소: ', kwargs['address'])
x = {'name' : '문성호', 'age' : 29, 'address' : '인천'}
personal_info(**x)
- 리스트, 튜플 언패킹과 마찬가지로 딕셔너리도 함수 안에서 받을 수 있는데,
딕셔너리로 언패킹을 사용할 때는 딕셔너리 변수 앞에 **를 붙인 후 사용하면 된다.