시작하기무료로 시작하기

클로저로 값을 안전하게 지키기

아직 조카에게 클로저를 설명해 주고 있어요. 중첩 함수를 반환하는 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()
코드 편집 및 실행