開始使用免費開始

閉包能保護你的數值

你還在幫你的姪女理解閉包。你寫了函式 get_new_func(),它會回傳一個巢狀函式。這個巢狀函式 call_func() 會呼叫任何傳入 get_new_func() 的函式。你也寫了 my_special_function(),它只會列印一段訊息,說明你正在執行 my_special_function()

你想向你的姪女示範:不管在把 my_special_function() 傳給 get_new_func() 之後你怎麼修改它,新函式依然會模仿原本 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()
編輯並執行程式碼