특정 작업을 수행하는 코드 블록을 재사용 가능하게 묶어주는 함수(Function) 선언과 파이썬 변수 검색 범위인 LEGB 규칙을 다룹니다.
1. 함수 및 스코프 용어 사전 (Glossary)
- First-Class Citizen (일급 객체): 파이썬에서 함수는 변수에 할당할 수 있고, 다른 함수의 인자로 전달되거나 반환값으로 리턴될 수 있는 일급 객체입니다.
*args/**kwargs: 위치 가변 인자(*args)와 키워드 가변 인자(**kwargs)를 튜플 및 딕셔너리 형태로 동적 수집하는 매개변수 표현식입니다.- Lambda Function: 이름 없이 한 줄로 간단하게 선언하는 익명 함수 표현식입니다. (
lambda x: x + 1) - LEGB Rule: 파이썬 변수 이름을 검색하는 4단계 영역 우선순위입니다. (Local $ ightarrow$ Enclosing $ ightarrow$ Global $ ightarrow$ Built-in)
2. 가변 인자 및 람다 함수 실습
# 가변 인자 함수
def calculate_total(*args, **kwargs):
base_sum = sum(args)
tax_rate = kwargs.get("tax", 0.0)
return base_sum * (1 + tax_rate)
print(f"합계 및 세금 계산: {calculate_total(100, 200, 300, tax=0.1):,.0f}원")
# 람다 함수 정렬
products = [("노트북", 150), ("키보드", 8), ("마우스", 4)]
products.sort(key=lambda x: x[1]) # 가격 기준 정렬
print(f"가격 오름차순 정렬: {products}")
3. 자주 묻는 질문 (Q&A)
Q. 함수 안에서 전역 변수를 수정하려면 어떻게 하나요?
A. 함수 내부에서 global 변수명 키워드를 선언하면 전역 영역의 변수를 직접 참조하고 변경할 수 있습니다. (다만 남용 시 사이드 이펙트 주의)