← 문제 목록
고급 Python 100P

late binding 데코레이터 이슈

다음 코드에서 의도와 다른 동작이 발생하는 이유는?
PYTHON
def make_multiplier(n):
    def decorator(func):
        def wrapper(*args, **kwargs):
            return func(*args, **kwargs) * n
        return wrapper
    return decorator

multipliers = {}
for i in range(1, 4):
    @make_multiplier(i)
    def add_one(x):
        return x + 1
    multipliers[i] = add_one

print(multipliers[1](5))  # 기대: 6
print(multipliers[2](5))  # 기대: 12
print(multipliers[3](5))  # 기대: 18

답변

로그인 후 제출하기
0명 풀이 · 정답률 0%