패킹(packing)
- 인자로 받은 여러개의 값을 하나의 객체로 묶어 변수에 대입하는 것.
위치 인자 패킹
*
한 개를 매개변수 앞에 붙여 사용.
- 패킹하는 매개변수를 만나면 그 이후에 위치인자가 몇 개이던지, tuple로 하나의 객체가 되어서 관리.
- 예시
def print_my_family(dad, mom, *brother):
print("아버지 :", dad)
print("어머니 :", mon)
if brother:
print("형제가족")
for name in brother:
print(name)
print_my_family("박아빠", '이엄마', '박우수', '박윤구')
키워드 인자 패킹
**
를 사용하여 작성 가능
- 패킹한 인자들은 키워드와 인자 쌍으로 이뤄진 딕셔너리로 관리.
- 예시
def print_my_family(dad, mom, **brother):
print("아버지 :", dad)
print("어머니 :", mon)
if brother:
print("형제가족")
for title, name in brother.items():
print('{} : {}'.format(title, name))
print_my_family("박아빠", '이엄마', 큰형 = '박우수', 작은형 = '박윤구')
언패킹(unpacking)
- 하나의 객체를 여러 개의 변수로 나누어 담는 방법.
- 함수에서 언패킹 하는 경우, 매개변수에서
*
를 붙이는게 아니라 인자 앞에 *
를 붙여서 사용.
- 해체된 결과가 함수의 매개변수에 갯수와 다르다면 에러 발생.
- 예시
def sum(a, b, c):
return a + b + c
numbers = [2, 4, 6]
sum(numbers)
print(sum(*numbers))
위치 인자 언패킹
- 위치 인자를 언패킹 할 때는
Container
객체라면 다 가능.(set
, dict
타입 포함)
키워드 인자 언패킹
- 키워드 인자를 언패킹 하기 위해서는 잉ㄴ자가
key
와 인자
로 구성되어 있는 딕셔너리가 필요.
참조
https://wikidocs.net/22801