我正在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的行({1}}之外的所有上述工作。
我很好奇为什么那条线是唯一一个出错的线。我一直在写NameError: global name 'T' is not defined
,好像它等同于tuple(...)
,但似乎它们毕竟不一样。
我也检查过,Python 3.4.3在定义tuple([...])
,B1
和B2
的行上给出了错误,这些行至少看起来更一致。