Possible Duplicate:
Python nested functions variable scoping
经过反复试验,我终于发现这行不通:
def a():
def b():
print x
x=2
x = 1
b()
print x
您将得到一个异常(在被引用之前没有定义x)。所以看起来b可以读取x,但是如果它试图赋值给它,Python会将它对x的解释改为一个局部变量,现在还没有定义。在
我也有一个奇怪的问题:有什么方法可以实现这一点?有没有一种方法可以显式地访问父函数的作用域?(x不是全局的)
Tags:
python3中的^{} statement 将执行此操作。在
编辑:在Python2中,没有一种简单的方法来完成。如果需要这个功能,我建议您使用一些可变容器对象。例如:
如果您绝对必须为cpython2仿真
^{pr2}$nonlocal
,那么可以使用Python C API进行如下修改:您还可以将帧设置为local,而不是调用}。请不要做这两件事。你的用例肯定有更好的解决方案。在
PyFrame_LocalsToFast()
,而是操作a
的字节码,使其使用LOAD_NAME
而不是{相关问题 更多 >
编程相关推荐