gpt4 book ai didi

python - 为什么我在 Python 类定义中的生成器中得到这个 NameError?

转载 作者:太空狗 更新时间:2023-10-29 17:51:25 25 4
gpt4 key购买 nike

在 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有一个局部变量范围,而表达式for j in b在范围内,因此,没有找到b
实际上,如果你写 c = tuple((i, j) for i in a for j in b),它会抛出同样的异常。

解决方案是将 b 放入类定义的范围(就像您已经做的那样)并通过 self.b 引用它。

关于python - 为什么我在 Python 类定义中的生成器中得到这个 NameError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33418165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com