클로저로 값을 안전하게 지키기
아직 조카에게 클로저를 설명해 주고 있어요. 중첩 함수를 반환하는 get_new_func() 함수를 작성해 두었습니다. 중첩 함수 call_func()는 get_new_func()에 전달된 어떤 함수든 호출합니다. 또한 단순히 my_special_function()을 실행하고 있음을 알리는 메시지를 출력하는 my_special_function()도 작성해 두었어요.
이제 조카에게, my_special_function()을 get_new_func()에 전달한 이후에 my_special_function()을 어떻게 바꾸더라도, 새 함수의 클로저에 원래 my_special_function()이 캡처되어 있기 때문에 새 함수가 여전히 원래 my_special_function()의 동작을 따른다는 것을 보여 주려고 합니다.
이 연습은 강의의 일부입니다
Python으로 함수 작성하기
실습형 인터랙티브 연습
이 예제를 이 샘플 코드를 완성하여 풀어보세요.
def my_special_function():
print('You are running my_special_function()')
def get_new_func(func):
def call_func():
func()
return call_func
new_func = get_new_func(my_special_function)
# Redefine my_special_function() to just print "hello"
def my_special_function():
____
new_func()