python/기본

Closure

wefree 2022. 4. 29. 18:44
def outer(a, b):
    def inner():
        return a + b

    return inner


f = outer(1, 2)
r = f()  # 이 시점에 1 + 2 가 실행됨, lazy evaluation?
print(r)  # 3


####################################################################
# pi 값을 변경하면서 계산하고 싶다..
def circle_area_func(pi):
    def circle_area(radius):
        return pi * radius * radius

    return circle_area


cal = circle_area_func(3.14)
cal2 = circle_area_func(3.141592)

print(cal(10))  # 314.0
print(cal2(10))  # 314.1592