본문 바로가기
프로그래밍/[Python] 파이썬

[Python] 파이썬 packing, unpacking - 패킹, 언패킹 쉽게 이해하기

by GenieIT* 2024. 9. 12.
728x90
반응형

 


 

  • 파이썬 패킹(packing)은 여러 개의 값을 하나의 변수로 묶는 과정
  • 파이썬 언패킹(unpacking)은 묶인 값을 여러 개의 변수로 분리하는 과정

 


 

패킹 (PACKING)

  • 파이썬에서 패킹은 여러 개의 값을 하나의 변수로 묶는 것을 의미합니다. 
  • 리스트, 튜플 같은 자료형을 묶을 때 주로 사용되며, 가변인자 사용시에도 유용하게 사용 됩니다.

 

튜플 패킹

a = 1, 2, 3, 4
print(a) 

# (1, 2, 3, 4)

 

리스트 패킹

a = [1, 2, 3, 4]
print(a) 

# [1, 2, 3, 4]

 

* 연산자를 사용한 패킹 (*, ** 가변 인자 패킹)

  • 가변 인자를 사용하는 함수는 튜플이나 리스트를 매개변수로 받게 되면 요소 갯수에 상관 없이 모두 받을 수 있다.
def func_packing (*arg) :
    print(arg)

func_packing(1, 2, 3) 

# (1, 2, 3)
  • 가변 인자를 딕셔너리 자료형으로 받는 방법 입니다.
def func_packing (**arg) :
    print(arg)

func_packing(a=1, b=2, c=3) 

# {'a': 1, 'b': 2, 'c': 3}

 

가변 함수를 사용한 활용 예제

def func_packing (*arg) :
    total = 0
    
    for i in arg :
        total += i

    print(arg, total)


func_packing(1, 2) 
func_packing(3, 4, 5)
func_packing(6, 7, 8, 9)

'''
실행 결과
(1, 2) 3
(3, 4, 5) 12
(6, 7, 8, 9) 30
'''
def func_packing (**arg) :
    print(arg)

    for k, v in arg.items() :
        print(k, v)

func_packing(a=1, b=2)

'''
실행 결과
{'a': 1, 'b': 2}
a 1
b 2
'''

func_packing(a=3, b=4, c=5)

'''
실행 결과
{'a': 3, 'b': 4, 'c': 5}
a 3
b 4
c 5
'''

func_packing(a=6, b=7, c=8, d=9)

'''
실행 결과
{'a': 6, 'b': 7, 'c': 8, 'd': 9}
a 6
b 7
c 8
d 9
'''

 


 

언패킹 (UNPACKING)

  • 파이썬에서 언패킹은 패킹된 값을 여러 개의 변수로 분리하는 것을 의미합니다.
  • 주로 리스트나 튜플 같은 자료형에 묶여 있는 여러 값을 각각의 변수에 할당할 때 사용합니다.

 

튜플 언패킹

a, b, c = (1, 2, 3)

print(a) # 1
print(b) # 2
print(c) # 3

 

리스트 언패킹

a, b, c = [1, 2, 3]

print(a) # 1
print(b) # 2
print(c) # 3

 

* 연산자를 사용한 언패킹

*a, b, c = [1, 2, 3, 4, 5]

print(a) # [1, 2, 3]
print(b) # 4
print(c) # 5


a, *b, c = [1, 2, 3, 4, 5]

print(a) # 1 
print(b) # [2, 3, 4]
print(c) # 5


a, b, *c = [1, 2, 3, 4, 5]

print(a) # 1
print(b) # 2
print(c) # [3, 4, 5]

 

함수에서의 언패킹 예제

def func_unpacking (a, b, c, *d) :
    print(a)
    print(b)
    print(c)
    print(d)

arg = [1, 2, 3, 4, 5]
func_unpacking(*arg)

'''
실행 결과
1
2
3
(4, 5)
'''
def func_unpacking (a, b, c, **d) :
    print(a)
    print(b)
    print(c)
    print(d)

arg = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
func_unpacking(**arg)

'''
실행 결과
1
2
3
{'d': 4, 'e': 5}
'''

 


 

 

 

 

 

728x90
반응형