코딩이 즐겁다

[파이썬 기초] 패킹(packing)과 언패킹(unpacking) 갓벽 가이드 본문

Python

[파이썬 기초] 패킹(packing)과 언패킹(unpacking) 갓벽 가이드

코즐 2025. 2. 7. 13:47
반응형

 

파이썬 패킹(Packing)과 언패킹(Unpacking)이란?

파이썬(Python)에서 패킹(Packing)과 언패킹(Unpacking)은 여러 개의 값을 한 변수에 저장하거나, 다시 개별 변수로 분해하는 기능입니다. 이 기능을 사용하면 코드가 간결해지고, 데이터를 효율적으로 처리할 수 있습니다.

 


 

패킹 (Packing)

패킹(Packing)이란 여러 개의 값을 하나의 변수(튜플, 리스트, 딕셔너리 등)에 저장하는 것을 의미합니다. 리스트, 튜플 같은 자료형을 묶을 때 주로 사용되며, 가변인자 사용시에도 유용하게 사용 됩니다.

튜플 패킹

✅ 예제:

# 여러 개의 값을 하나의 튜플 변수에 저장 (패킹)
data = 1, 2, 3
print(data)  # (1, 2, 3)
print(type(data))  # <class 'tuple'>

괄호 없이 여러 값을 변수에 할당하면 자동으로 튜플이 생성됩니다.

 

리스트 패킹

✅ 예제:

# 여러 값을 리스트에 저장
data = [10, 20, 30, 40]
print(data)  # [10, 20, 30, 40]
print(type(data))  # <class 'list'>

리스트는 대괄호 []를 사용하여 여러 값을 저장할 수 있습니다.

 

딕셔너리 패킹

✅ 예제:

# 키-값 쌍을 하나의 딕셔너리로 패킹
person = {"name": "Alice", "age": 25, "city": "Seoul"}
print(person)  # {'name': 'Alice', 'age': 25, 'city': 'Seoul'}

딕셔너리는 중괄호 {}를 사용하여 여러 값을 패킹합니다.

 

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

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

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)

언패킹(Unpacking)이란 패킹된 값을 개별 변수로 분해하는 과정을 의미합니다. 주로 리스트나 튜플 같은 자료형에 묶여 있는 여러 값을 각각의 변수에 할당할 때 사용합니다.

튜플 언패킹

✅ 예제:

data = (1, 2, 3)

# 튜플의 값을 각각 변수에 저장
a, b, c = data

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

튜플의 값 개수와 변수 개수가 같아야 합니다.

 

리스트 언패킹

✅ 예제:

data = [10, 20, 30]

x, y, z = data

print(x)  # 10
print(y)  # 20
print(z)  # 30

리스트도 동일한 방식으로 각 변수에 값을 분배할 수 있습니다.

 

딕셔너리 언패킹 (keys, values, items)

✅ 예제:

person = {"name": "Alice", "age": 25, "city": "Seoul"}

# 키와 값 언패킹
name, age, city = person.values()

print(name)  # Alice
print(age)   # 25
print(city)  # Seoul
  • .values()를 사용하면 값만 언패킹할 수 있습니다.
  • .keys(), .items()도 언패킹에 활용할 수 있습니다.

 


 

별(*)을 활용한 확장 언패킹

파이썬에서는 *을 사용하여 특정 변수에 나머지 값을 리스트 형태로 저장할 수 있습니다.

튜플/리스트에서 일부 값만 언패킹

✅ 예제:

numbers = (1, 2, 3, 4, 5)

a, b, *rest = numbers

print(a)      # 1
print(b)      # 2
print(rest)   # [3, 4, 5]  → 나머지 값은 리스트로 저장

*rest는 나머지 값을 리스트로 묶어 저장합니다.

 

앞과 뒤 값을 고정하고 중간 값만 리스트 저장

✅ 예제:

data = [100, 200, 300, 400, 500]

first, *middle, last = data

print(first)   # 100
print(middle)  # [200, 300, 400]
print(last)    # 500

*middle에 중간 값들만 리스트로 저장됩니다.

 

함수에서 *args를 활용한 언패킹

함수에서 여러 개의 인수를 받을 때 *args를 사용하면 튜플 형태로 패킹됩니다.

✅ 예제:

def my_func(*args):
    print(args)  # 튜플 형태로 출력

my_func(1, 2, 3, 4)  
# (1, 2, 3, 4)

*args는 가변 길이 인자를 받을 때 사용됩니다.

 


 

가변인자(**)를 활용한 딕셔너리 언패킹

가변인자(**)를 사용하면 딕셔너리를 언패킹하여 함수의 키워드 인자로 전달할 수 있습니다.

💡 딕셔너리를 함수 인자로 전달

def person_info(name, age, city):
    print(f"이름: {name}, 나이: {age}, 도시: {city}")

person = {"name": "Alice", "age": 25, "city": "Seoul"}

# 딕셔너리를 언패킹하여 전달
person_info(**person)

'''
출력 결과
이름: Alice, 나이: 25, 도시: Seoul
'''

** 가변 인자를 사용하면 딕셔너리의 키를 함수의 매개변수로 매칭하여 전달할 수 있습니다.

 


 

코즐

파이썬을 배우고 싶은 사람은 누구나 파이썬 학원(국비 지원 파이썬 학원)에 가지 않고도 파이썬 공부를 하면서 실력을 쌓아나갈 수 있다고 생각합니다. 

파이썬 온라인 강의 자료를 올리면서 누구나 쉽게 파이썬을 공부하실 수 있도록 최선을 다해서 설명하도록 하겠습니다.

 


 

 

반응형