* 패킹(Packing)
여러 개의 값을 하나의 튜플로 패킹.
data = 1, 2, 3
print(data)
# 출력결과 : (1, 2, 3)
=> 여러개의 값을 data 라는 변수에 패킹. 출력결과는 튜플인 것을 확인할 수 있다.
* 언패킹(Unpacking)
하나의 변수에 묶여 있던 값을 여러 변수에 나눠서 할당.
(자바스크립트의 구조분해할당과 유사한듯)
a, b, c = data
print(a) # 출력결과: 1
print(b) # 출력결과: 2
print(c) # 출력결과: 3
=> data 튜플에 담겨있던 값들을 각각 a, b, c라는 변수에 언패킹.
언패킹 변수의 갯수와 데이터(튜플, 리스트 등) 갯수를 맞춰줘야함!!
파이썬은 여러개의 값을 return하면 자동으로 튜플로 묶어버린다. (패킹)
def get_info():
return "Alice", 25, "Engineer"
result = get_info() # 튜플로 반환!!!
print(result) # ('Alice', 25, 'Engineer')
=> 따라서 return한 개별값들을 활용하고 싶다면 개별 변수로 언패킹 해줘야함.
name, age, job = get_info()
print(name) # Alice
print(age) # 25
print(job) # Engineer
언패킹 없이 하나의 튜플로 전달해서 사용하면 타입오류발생.
def print_info(name, age, job):
print(f"Name: {name}, Age: {age}, Job: {job}")
print_info(get_info()) # TypeError 발생
=> get_info 의 반환값은 튜플이지만 print_info의 인자는 세개!
개별 변수에 담아서 전달하거나
아래처럼 *을 사용하면 자동으로 언패킹 해준다.
print_info(*get_info())
# print_info("Alice", 25, "Engineer") --> 자동언패킹
# 출력결과 Name: Alice, Age: 25, Job: Engineer
리스트에서도 언패킹 가능
data = ["Python", "JavaScript", "C++"]
a, b, c = data
print(a) # Python
print(b) # JavaScript
print(c) # C++
아래처럼 일부만 언패킹도 가능.
first, *middle, last = [1, 2, 3, 4, 5]
print(first) # 1
print(middle) # [2, 3, 4]
print(last) # 5
* 는 하나의 변수에만 사용 가능!!
'Python > 공부공부' 카테고리의 다른 글
[Python] top-level 코드 ( import시점 & runtime 시점 ) (0) | 2025.05.05 |
---|---|
[Python] Deepdiff, PyYAML 라이브러리 (+ YAML이란?) (0) | 2025.02.03 |
[Python] 웹 프레임워크 (Django, Flask, FastAPI, Sanic 등..) (0) | 2024.10.14 |
[Python] pymysql 라이브러리 (MySQL 데이터 베이스 연동) (0) | 2024.10.14 |
[Python] zfill() _ 문자열채우기 (날짜/시간 표현) (0) | 2024.07.26 |