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 は を定義する行でエラーを出し、B1少なくともより一貫しているようですB2B3

4

0 に答える 0