파이썬 만의 특징으로 패킹과 언패킹이 있다. 활용방법이 다양해서 아직 학습 중이다.
기본 활용방법만 퍼와서 정리해봤다.
패킹이란?
여러 개의 데이터를 담는 것
언패킹이란?
패킹한 것을 다시 푼다는 뜻이다.
파이썬에서 패킹하는 방법(튜플):
packing = 1, 2, 3
# 괄호를 생략해도 튜플을 만들 수 있다.
print(packing)
>>>(1, 2, 3)
언패킹하는 방법(튜플):
packing = 1, 2, 3
a, b, c = packing
print(a, b, c) # 1 2 3
패킹과 언패킹은 내가 예전에 잠깐 배우고 지나갔던 함수 파라미터의 *args, **kwargs와 관련이 있다.
함수를 정의할 때
파라미터가 *일 때는 튜플을 패킹하여 받는다.
def args(*args):
print(args)
args(1) # (1,) 튜플 원소가 하나일 경우,가 존재함
args(1,2) # (1,2)
args(1,2,3) # (1,2,3)
**일 때는 딕셔너리를 패킹하여 받는다.
전달된 값을 key와 value로 묶은 뒤 딕셔너리로 패킹하여 받는 경우
def kwargs(**kwargs):
print(kwargs)
kwargs(a=1,b=2) # {'a':1, 'b':2}
함수를 호출할 때 딕셔너리를 인자로 쓸 경우 정리
*를 사용해 딕셔너리를 파라미터로 전달할 때
*만 사용할 경우 딕셔너리의 key들이 언패킹되어 전달된다.
def test(a,b,c):
print(a,b,c, sep=',')
d = dict(a=1, b=2, c=3)
test(*d) # a,b,c
반면 **를 사용해 딕셔너리를 파라미터로 전달할 경우 딕셔너리의 value들이 파라미터로 언패킹되어 전달된다.
def test(a,b,c):
print(a,b,c, sep=',')
d = dict(a=1,b=2,c=3)
test(**d) # 1,2,3
key,value 모두를 튜플로 전달할 때
def test(a,b,c):
print(a,b,c, sep=',')
d = dict(a=1,b=2,c=3)
test(*d.items()) # ('a',1),('b',2),('c',3)