爲什麼調用f()()
不一樣h=f()
然後h()
當ID是爲f()
和h
一樣嗎?返回的調用函數對象不顯示相同的結果? Python3.x
Python程序:
def f():
c = [0]
def g():
c[0] += 1
return c[0]
return g
print (id(f()), id(f()))
print (f()(), f()())
h = f()
print (id(h))
print (h(), h())
輸出:
140383530386568 140383530386568
1 1
140383530386568
1 2
編輯:
和爲什麼的c
值持續???
因爲在第一種情況下,在創建新的功能,並調用它的飛行,兩次。 'c'作爲自由變量是指兩個不同的對象。在第二種情況下,您正在調用相同的功能。 ID恰好相同,因爲解釋器重用了相同的內存位置。 –
@ juanpa.arrivillaga這似乎很好地回答了這個問題。我會建議張貼這個答案。 –
在my.phone上,做不到正義 –