PHpullh

PYTHON · 함수

클로저 심화

클로저(closure)는 외부 함수의 변수를 기억하는 내부 함수입니다. 상태를 캡슐화하는 강력한 패턴입니다.

함수중급closure클로저nonlocal캡슐화

핵심 설명

클로저(closure)는 외부 함수의 변수를 기억하는 내부 함수입니다. 상태를 캡슐화하는 강력한 패턴입니다.

Python code

def make_counter(start=0):
    count = start
    def counter():
        nonlocal count
        count += 1
        return count
    return counter

c = make_counter(10)
print(c())  # 11
print(c())  # 12

# 클로저로 설정 캡처
def make_formatter(fmt):
    def formatter(value):
        return f"{value:{fmt}}"
    return formatter

as_percent = make_formatter(".1%")
as_currency = make_formatter(",.0f")
print(as_percent(0.856))  # 85.6%
print(as_currency(1234567))  # 1,234,567

# 클로저 내부 변수 확인
print(as_percent.__closure__[0].cell_contents)  # .1%

학습 팁

클로저 내부에서 외부 변수를 변경하려면 nonlocal 키워드가 필요합니다.

주의할 점

루프 안에서 클로저를 만들면 모든 클로저가 같은 변수를 참조합니다. 기본 인자로 값을 캡처하세요: lambda x=x: x.

자주 묻는 질문

클로저 심화란 무엇인가요?

클로저(closure)는 외부 함수의 변수를 기억하는 내부 함수입니다. 상태를 캡슐화하는 강력한 패턴입니다.

클로저 심화 학습 시 주의할 점은 무엇인가요?

루프 안에서 클로저를 만들면 모든 클로저가 같은 변수를 참조합니다. 기본 인자로 값을 캡처하세요: lambda x=x: x .