Skip to main content
 首页 » 编程设计

python之如何在 Python 中实现 Javascript 闭包

2024年08月26日43lautakyan007

我正在尝试在 Python 2.7 中实现 Javascript 闭包。

考虑以下代码:

var = {'upper_scope':None} 
 
def f1(): 
    print var 
 
def f2(): 
    var = {'upper_scope': var} 

第一个函数工作正常。第二个在第一行失败:

UnboundLocalError: local variable 'var' referenced before assignment.  

我想从上层作用域中读取 var 的值,并将其放入名为 var 的本地字典中。

请您参考如下方法:

它在 f2() 中不起作用,因为您在本地覆盖了 var 的全局定义。 如果您在 f2() 中重命名 var,它将起作用:

def f2(): 
   other_var = {'upper_scope': var} 

或者,您可以将其定义为全局变量,然后 var 值的更改也将应用于全局变量,如下所示:

def f2(): 
   global var 
   var = {'upper_scope': var} 

话虽如此,将变量作为参数传递给函数始终是一种更好的方法,除非您确实在多个地方需要它和/或需要更改其值。