从上面的例子可以看出,当嵌套函数引用其封闭范围内的值时,在Python中有使用了一个闭包。
在Python中创建闭包必须满足的标准将在以下几点 -
- 必须有一个嵌套函数(函数内部的函数)。
- 嵌套函数必须引用封闭函数中定义的值。
- 闭包函数必须返回嵌套函数。
def print_msg(msg):
# This is the outer enclosing function
def printer():
# This is the nested function
print(msg)
return printer # this got changed
# Now let's try calling this function.
# Output: Hello
another = print_msg("Hello")
another()
del print_msg
another()
print_msg("Hello")
Hello Hello File "D:/AI/test2.py", line 14, in <module> print_msg("Hello") NameError: name 'print_msg' is not defined