在 Python 3.5.0 中,这段代码:
a = (1,2)
class Foo(object):
b = (3,4)
c = tuple((i,j) for j in b for i in a)
d = tuple((i,j) for i in a for j in b)
产生:
Traceback (most recent call last):
File "genexprtest.py", line 2, in <module>
class Foo(object):
File "genexprtest.py", line 5, in Foo
d = tuple((i,j) for i in a for j in b)
File "genexprtest.py", line 5, in <genexpr>
d = tuple((i,j) for i in a for j in b)
NameError: name 'b' is not defined
为什么我会收到此错误?为什么我在上一行没有收到此错误?
这是因为表达式for i in a
has a 局部变量作用域, 和表达式for j in b
是在范围之内,因此,没有b
被发现。
事实上,如果你写c = tuple((i, j) for i in a for j in b)
,它会抛出相同的异常。
解决方案已放上b
进入类定义的范围(正如您已经所做的那样)并通过以下方式引用它self.b
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)