在我的Python版本(下面的版本信息)中,以下内容在分配变量e的行中断(但在此之前工作正常):
class Foo:
a = 1
b = a + 2
print(b) # works
c = [ "apple", "banana", "cherry", "dragonfruit" ]
d = [ "I like " + fruit for fruit in c]
print(d) # works
d2 = c + ["elderberry"]
print(d2) # works
e = ["I like " + c[i] for i in range(4)] #ERROR: NameError: name 'c' is not defined
print(e)
这令我感到惊讶;我无法判断这是预期的行为还是Python中的错误。如果这是故意的,有人可以解释这个意图吗?
从我所见,问题只发生在静态类变量的上下文中。换句话说,当然,如果我取代"类Foo"用"如果是真的"然后整个过程没有错误。
我在OS-X 10.9.5上使用以下版本的Python: Python 3.4.3(v3.4.3:9b73f1c3e601,2015年2月23日,02:52:03)