我正在 Python 2.7.13 中编写一个简单的类,但遇到了一个令人惊讶的错误:
class X(object):
T = 'test {}'
A1 = [x for x in T] # ok
A2 = tuple([x for x in T]) # ok
A3 = tuple(x for x in T) # ok
B1 = [T.format(x) for x in (1,2)] # ok
B2 = tuple([T.format(x) for x in (1,2)]) # ok
B3 = tuple(T.format(x) for x in (1,2)) # NameError
除了定义 B3 的行之外,上述所有工作都给出了NameError: global name 'T' is not defined
.
我很好奇为什么那条线是唯一给出错误的线。我一直在写tuple(...)
,好像它等同于tuple([...])
但似乎它们毕竟不一样。
我还检查了 Python 3.4.3 在定义的行上给出了一个错误B1
,B2
并且B3
至少看起来更一致。