def func():
global x
print 'x is', x
x = 2
print id(x)
print 'Changed global x to', x
x = 50
print id(x)
func()
print 'Value of x is', x
print id(x)
輸出蟒蛇身份全局變量
32308172
x is 50
32308748
Changed global x to 2
Value of x is 2
32308748
我期待id()
應該因爲x
同一副本是全球使用的所有的所有三次返回相同的值。爲什麼它的行爲如此。
整數是不變的,而'global'指**姓名**'x',沒有任何潛在的對象恰好是分配給。看看例如http://nedbatchelder.com/text/names.html – jonrsharpe
它是對象的ID,而不是變量的ID。在CPython中嘗試:'a = 1'' id(a)''b = 1'' id(b)' – Roberto
@Roberto,這個例子可能會給出令人困惑的結果,因爲小整數是* interned *。 – jonrsharpe