파이썬 코딩 및 프레임워크(OpenAI SDK, FastAPI, Django 등) 활용 시 필수적인 언패킹 및 고급 대입 연산자 5가지 및 파이썬 코드를 획기적으로 줄여주고 가독성을 높여주는 리스트 컴프리헨션(List Comprehension)과 삼항 연산자(Ternary Operator)를 쉽게 이해할 수 있도록 예제와 함께 정리합니다.
1. * (iterable 언패킹 연산자)
리스트, 튜플, 세트 등의 순서가 있는 자료형(Iterable) 내부 요소를 하나씩 밖으로 풀어헤칠 때 사용합니다.
# 1) 리스트/튜플 병합
fruits = ["apple", "banana"]
veggies = ["carrot", "cucumber"]
# 기존 방식을 대체하는 깔끔한 병합
basket = [*fruits, "grape", *veggies]
print(basket) # ['apple', 'banana', 'grape', 'carrot', 'cucumber']
# 2) 함수의 위치 인자로 전달
def print_coords(x, y, z):
print(f"X: {x}, Y: {y}, Z: {z}")
point = (10, 20, 30)
print_coords(*point) # print_coords(10, 20, 30)과 동일
2. ** (딕셔너리 언패킹 연산자)
딕셔너리(Key-Value)의 내부 요소를 key=value 형태로 풀어헤칠 때 사용합니다.
# 1) 딕셔너리 병합 및 업데이트
default_config = {"theme": "dark", "fontSize": 14}
user_config = {"fontSize": 18, "showSidebar": True}
# 뒤에 위치한 user_config의 값으로 덮어씌워짐
final_config = {**default_config, **user_config}
print(final_config) # {'theme': 'dark', 'fontSize': 18, 'showSidebar': True}
# 2) 함수의 키워드 인자로 전달 (API 호출 시 매우 자주 사용)
def create_user(name, age, role):
print(f"{name} ({age}세) - 역할: {role}")
user_data = {"name": "Alice", "age": 28, "role": "Developer"}
create_user(**user_data) # create_user(name="Alice", age=28, role="Developer")와 동일

3. *args & **kwargs (가변 인자)
함수를 정의할 때 인자의 개수가 정해지지 않은 경우 활용합니다.
- *args: 입력받은 여러 개의 위치 인자를 하나의 튜플(Tuple)로 묶습니다.
- **kwargs: 입력받은 여러 개의 키워드 인자를 하나의 딕셔너리(Dictionary)로 묶습니다.
def build_profile(name, *skills, **extra_info):
print(f"이름: {name}")
print(f"보유 기술: {skills}") # Tuple 형태
print(f"추가 정보: {extra_info}") # Dict 형태
# 호출
build_profile(
"Bob", # name (일반 인자)
"Python", "FastAPI", "Docker", # *skills (위치 가변 인자)
location="Seoul", status="Active" # **extra_info (키워드 가변 인자)
)
# 출력:
# 이름: Bob
# 보유 기술: ('Python', 'FastAPI', 'Docker')
# 추가 정보: {'location': 'Seoul', 'status': 'Active'}
4. Extended Unpacking / Star Target (*rest)
구조 분해 대입(Unpacking Assignment) 시, 남는 요소들을 한 번에 리스트로 모을 때 사용합니다.
numbers = [1, 2, 3, 4, 5]
# 맨 처음 값, 맨 끝 값, 그리고 '나머지 전체'를 분리할 때
first, *middle, last = numbers
print(first) # 1
print(middle) # [2, 3, 4] <-- 중간 요소들이 리스트로 묶임
print(last) # 5
5. := (바다표범 / Walrus 연산자)
"값을 변수에 대입함과 동시에 그 값을 조건식이나 표현식에 즉시 사용"할 수 있게 해주는 연산자입니다.
# 기존 방식: len()을 두 번 호출하거나 줄을 나누어야 함
# count = len(items)
# if count > 0: ...
# Walrus 연산자 적용 방식
data = [1, 2, 3, 4]
if (n := len(data)) > 0:
print(f"데이터 개수: {n}개")
# 반복문(while)에서 조건 판단과 동시에 값 읽기
import random
while (num := random.randint(1, 10)) != 5:
print(f"뽑힌 숫자: {num} (5가 아니므로 재시도)")
print("5가 나와서 종료합니다!")
6. 삼항 연산자 (Ternary Operator)
삼항 연산자는 일반적인 if-else 조건문을 한 줄로 간결하게 표현하는 방법입니다.
🐦🔥 기본 문법
[참일 때 값] if [조건식] else [거짓일 때 값]
🕊️ 비교 예제
기존 if-else 방식:
age = 20
if age >= 19:
status = "성인"
else:
status = "미성년자"
print(status) # 성인
삼항 연산자 적용 방식:
age = 20
# 한 줄로 간결하게 처리
status = "성인" if age >= 19 else "미성년자"
print(status) # 성인
Tip: 조건에 따라 변수에 할당할 값만 깔끔하게 다를 때 사용하면 코드 줄 수를 크게 줄일 수 있습니다.
7. 리스트 컴프리헨션 (List Comprehension)
리스트 컴프리헨션은 for 문과 append() 메서드를 사용하지 않고, 새로운 리스트를 한 줄의 표현식으로 생성하는 파이썬 고유의 문법입니다.
🐦🔥 기본 문법
[표현식 for 변수 in 반복가능한객체]
🕊️ 비교 예제
1부터 5까지의 숫자를 제곱하여 새로운 리스트를 만드는 경우:
기존 for 문 방식:
squares = []
for x in range(1, 6):
squares.append(x ** 2)
print(squares) # [1, 4, 9, 16, 25]
리스트 컴프리헨션 적용 방식:
# [x의 제곱 | x를 1부터 5까지 반복]
squares = [x ** 2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
8. 리스트 컴프리헨션 + 조건문 (if)
리스트 컴프리헨션에 if 문을 추가하면, 원하는 조건에 맞는 요소만 필터링하여 리스트로 만들 수 있습니다.
🐦🔥 기본 문법 (if 필터링)
[표현식 for 변수 in 반복가능한객체 if 조건식]
🕊️ 예제
1부터 10까지의 숫자 중 짝수만 골라 제곱 리스트 만들기:
# range(1, 11)에서 x%2 == 0(짝수)인 것만 골라 x**2를 수행
even_squares = [x ** 2 for x in range(1, 11) if x % 2 == 0]
print(even_squares) # [4, 16, 36, 64, 100]
9. 리스트 컴프리헨션 + 삼항 연산자 (if-else)
조건에 따른 필터링이 아니라, 조건에 따라 값을 변경하고 싶다면 삼항 연산자를 리스트 컴프리헨션 앞부분에 결합하여 사용합니다.
🐦🔥 기본 문법 (if-else 값 변경)
[[참일 때 값] if [조건식] else [거짓일 때 값] for 변수 in 반복가능한객체]
🕊️ 예제
1부터 5까지의 숫자 중 짝수는 "짝수", 홀수는 "홀수"라는 문자열로 변환한 리스트 만들기:
numbers = [1, 2, 3, 4, 5]
# 삼항 연산자가 for 문 앞에 위치합니다.
result = ["짝수" if x % 2 == 0 else "홀수" for x in numbers]
print(result) # ['홀수', '짝수', '홀수', '짝수', '홀수']
📜 주의할 점: 위치 차이 한눈에 보기
- if만 사용할 때 (필터링): for 문 뒤에 위치
[x for x in list if x > 0] - if-else 삼항 연산자를 쓸 때 (값 변환): for 문 앞에 위치
[x if x > 0 else 0 for x in list]
'AI, 클라우드, 문서, 자동화 > 파이썬 요리조리' 카테고리의 다른 글
| 간단한 Word 자동화 프로그램, 다산 정약용의 유배지에서 보낸 편지 (0) | 2025.09.05 |
|---|---|
| 간단한 번역 프로그램, 파일로 저장하기 (0) | 2025.08.24 |
| 당황하지 말자, 기억나지 않는 문서 암호/비밀번호 찾기(2) (0) | 2025.08.22 |
| 당황하지 말자, 기억나지 않는 문서 암호/비밀번호 찾기(1) (0) | 2025.08.22 |
| 내부 IP & 외부 IP 조회(함수, 클래스까지 정리) (0) | 2025.08.21 |