在学习python中的范围时,我遇到了以下简单的代码。我的疑问是如何将参数传递给函数中的 outer_var 和 inner_var 。
def outerfunc(outer_var):
def innerfunc(inner_var):
return outer_var * inner_var
return innerfunc
答案 0 :(得分:1)
基本上,是的,就像@jonrsharpe所说:这是因为关闭。
闭包在一个函数内“关闭”,可以在以后使用。每次运行outerfunc()
时,代码都会定义innerfunc()
的新版本,该版本可以访问当时传递的outer_var
。
闭包是使参数化装饰器工作的原因。