파이썬 패킹, 언패킹, 딕셔너리 언패킹

개발자 강세영·2022년 6월 11일
0

TIL

목록 보기
39/70

파이썬 만의 특징으로 패킹과 언패킹이 있다. 활용방법이 다양해서 아직 학습 중이다.
기본 활용방법만 퍼와서 정리해봤다.

패킹이란?
여러 개의 데이터를 담는 것

언패킹이란?
패킹한 것을 다시 푼다는 뜻이다.

파이썬에서 패킹하는 방법(튜플):

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)

출처 : https://western-sky.tistory.com/91

0개의 댓글