🎈 packing
- 인자로 받은 여러개의 값을 하나의 객체로 받을 수 있도록 함
- 위치 인자가 패킹하는 매개변수를 만나면 tuple로 하나의 객체가 되어 관리
- 매개변수에 * 붙여서 사용
def func(*args):
print(args)
print(type(args))
func(1, 2, 3)
- 반드시 받아야하는 매개변수와 여러개를 받을 수 있는 매개변수를 구분해 작성할 수 있음
def func(one, two, *args):
print(one, two)
print(args)
func(1, 2, 3, 4, 5, 6)
- **을 통해 키워드 인자 패킹
- 키워드 인자는 패킹한 인자들을 딕셔너리로 관리
def kwpacking(**kwargs):
print(kwargs)
print(type(kwargs))
kwpacking(one=1, two=2, three=3)
def func(one, two, **kwargs):
print(one, two)
for key, value in kwargs.items():
print(f'{key} : {value}')
func(1, 2, three=3, four=4)
- 위치 인자와 키워드 인자 packing을 동시에 할 수 있음
def func(*args, **kwargs):
print(args[0])
print(args[1])
for key, value in kwargs.items():
print(f'{key} : {value}')
func(1, 2, three=3, four=4)
- packing을 통해 swap을 쉽게 할 수 있음
a,b = b,a
🎈 unpacking
- 여러개의 객체를 포함하고 있는 하나의 객체를 풀어줌
- 인자 앞에 * 붙여서 사용
- 해체된 결과가 함수의 매개변수의 개수와 다르면 에러
- Container 객체라면 다 가능 (set, dict는 순서 정보 가지고 있지 않아서 결과가 다를 수 있음)
def func(a, b, c):
return a + b+ c
nums = [1, 2, 3]
print(func(*nums))
- 키워드 인자로 unpacking
- key와 인자로 구성되어 있는 dict 필요
def func(a, b, c):
return a + b+ c
nums = {'a':1, 'b':2, 'c':3}
print(func(**nums))
참고
https://wikidocs.net/22801