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