这段代码给出了错误:UnboundLocalError: local variable 'LINES' referenced before assignment
but LINES
已明确初始化,因为如果我注释掉 print 语句下面的行,它不会抛出任何错误并打印len(lines) = 0
正如预期的那样。我是不是不太懂python??这里发生了什么?
LINES = []
def foo():
for prob in range(1,3):
print "len(lines) = %d" % len(LINES)
LINES = []
if __name__ == "__main__":
foo()
You can access来自内部的全局变量foo
,但你不能重新绑定它们,除非global
使用了关键字
所以你可以使用LINES.append(...)
or LINES[:] = []
因为它们只是修改 LINES 引用的列表。
当您尝试分配给LINES
using LINES = []
,Python 知道它需要在函数局部变量中为 LINES 创建一个条目。既然你正在尝试使用len(LINES)
在将任何内容分配给局部变量之前,它会导致错误
您可以检查foo
像这样
>>> foo.func_code.co_nlocals
2
>>> foo.func_code.co_varnames
('prob', 'LINES')
如果你定义foo
再次没有LINES = []
,您会看到 Python 不再将其标记为局部变量。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)