這不起作用:(全局名稱 '一' 是沒有定義)爲什麼這個工程在python中有時? (可變範圍)
if True:
a = 3
else:
a = 4
print a
這工作:
class A:
def f(self):
if True:
a = 3
else:
a = 4
print a
A().f()
這不起作用:(全局名稱「一'沒有定義)
class A:
def __init__(self):
a = 3
def f(self):
print a
A().f()
爲什麼它在一種情況下而不在另一種情況下工作?我認爲,如果它在(2)的情況下工作,那麼這是因爲a
進入類上下文,但這並不使它在(3) 工作我看到其他討論,但我不明白所說的一切,情況各不相同。
編輯:
例1不工作,至少在一個python 2.7解釋器。這就是爲什麼當你在一個函數中創建一個變量這樣的例子1和2是矛盾的
第一個示例**可以工作。總是定義'a'。 –
在上例中,'a'是'__init__'中的局部變量。函數中的局部變量在函數作用域之外是不可見的。無論是'f'還是'__init__'都是同一個類中的方法,它們不會共享其本地名稱空間。 –
@MartijnPieters第一個例子在我的機器上不起作用。我正在使用解釋器,如果它有所作用 – Thomas