我在http://pydanny.com/python-dictionary-as-a-class.html找到了以下代码。该代码工作正常,我有点理解它为什么会这样,但类似的代码在它下面给出了错误。
def newclass(**kwargs):
""" Use kwargs.update() method to handle inheritance """
def set(key, value):
""" Sets key/value to the kwargs.
Replicates self/this clumsily
"""
kwargs[key] = value
kwargs['set'] = set
return kwargs
我的试用码:
def closing():
x=1
def closed():
print(x)
x=x+1
return(closed)
a=closing()
a()
错误信息:
Traceback (most recent call last):
File "<pyshell#606>", line 1, in <module>
a()
File "<pyshell#604>", line 4, in closed
print(x)
UnboundLocalError: local variable 'x' referenced before assignment
当我在封闭函数中使用“nonlocal x”时,它可以工作,但是初始代码如何在没有“nonlocal”的情况下工作。我的理解是它是一个闭包,内部函数将保持对外部(自由)变量的引用,并且每当调用内部函数时,它将能够对该封闭变量采取行动,但我当然没有正确理解它的某些部分. 请帮助我清除我缺少的概念。谢谢所有回答的人。所以太有帮助了。