1

我正在 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 在定义的行上给出了一个错误B1B2并且B3至少看起来更一致。

4

0 回答 0