반응형
파이썬에서 언패킹(unpacking)은 하나의 데이터 구조(예: list, tuple, dict 등)에 포함된 여러 값을 한 번에 변수에 할당하거나, 함수 호출에서 사용하기 위해 분리하는 기능이다. 이를 통해 코드가 간결해지고 가독성이 높아진다.
다양한 사례를 통해 언패킹으로 어떤 코드 작성이 가능한지 살펴본다.
1. Sequence 언패킹
Sequence(예: list, tuple 등)의 값을 변수에 한 번에 할당할 수 있다.
# tuple 언패킹
a, b, c = (1, 2, 3)
print(a, b, c) # 출력: 1 2 3
# list 언패킹
x, y, z = [4, 5, 6]
print(x, y, z) # 출력: 4 5 6
# string 언패킹
p, q, r = "ABC"
print(p, q, r) # 출력: A B C
*와 함께 사용한 언패킹
a, *b, c = [1, 2, 3, 4, 5]
print(a) # 출력: 1
print(b) # 출력: [2, 3, 4]
print(c) # 출력: 5
2. 딕셔너리 언패킹
dict의 key-value 쌍을 언패킹할 때 **를 사용한다.
my_dict = {'y': 20, 'x': 10}
def my_func(x, y):
print(x)
print(y)
my_func(**my_dict)
10
20
my_dict가 언패킹되면서, 함수에 argument로 y=20, x=10 형태로 전달된다.
3. 함수 호출에서의 언패킹
함수에 여러 개의 argument를 전달할 때 *와 **를 사용하여 list, tuple, dict를 언패킹할 수 있다.
# list 및 tuple 언패킹
def add(a, b, c):
return a + b + c
values = [1, 2, 3]
print(add(*values)) # 출력: 6
# dict 언패킹
kwargs = {'a': 1, 'b': 2, 'c': 3}
print(add(**kwargs)) # 출력: 6
4. 패킹과 언패킹의 조합
함수 정의에서 *args와 **kwargs를 사용하면 가변 길이의 argument를 받아올 수 있다. 이를 활용하면 언패킹과 조합이 가능하다.
def func(*args, **kwargs):
print("args:", args)
print("kwargs:", kwargs)
func(1, 2, 3, x=10, y=20)
args: (1, 2, 3)
kwargs: {'x': 10, 'y': 20}
5. 응용 예시
list 합치기
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged = [*list1, *list2]
print(merged) # 출력: [1, 2, 3, 4, 5, 6]
dict 합치기
dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}
merged_dict = {**dict1, **dict2}
print(merged_dict) # 출력: {'a': 1, 'b': 2, 'c': 3, 'd': 4}
반응형
'Python > 문법' 카테고리의 다른 글
[Python] Iterable과 Sequence 자료형 (0) | 2024.12.27 |
---|---|
[Python] 제너레이터(Generator) (1) | 2024.12.14 |
[Python] 데코레이터(Decorator) 3 - 클래스형 데코레이터 (0) | 2024.12.12 |
[Python] 데코레이터(Decorator) 2 - 동적 데코레이터 (0) | 2024.12.12 |
[Python] 데코레이터(Decorator) 1 - 데코레이터, 중첩 데코레이터 (0) | 2024.12.11 |