闭包让您的值更安全
您还在帮助您的侄女理解闭包。您编写了函数 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()