0
請參見下面的代碼:爲什麼默認情況下Python中的int對象被看作locale作用域?
i = 1
s = [1]
def foo():
global i
i += 1
print i
def goo():
s.append(2)
print s
我想知道爲什麼PyIntObject默認情況下,本地設置,而其他的對象呢?
謝謝!
請參見下面的代碼:爲什麼默認情況下Python中的int對象被看作locale作用域?
i = 1
s = [1]
def foo():
global i
i += 1
print i
def goo():
s.append(2)
print s
我想知道爲什麼PyIntObject默認情況下,本地設置,而其他的對象呢?
謝謝!
您不需要global i
,除非您打算將i
綁定到某個其他對象。這同樣適用於s
。由於它們都綁定到不可變對象上,因此不能將它們綁定到新對象上來更改它們的「值」。
所以這是確定
def foo():
print i
但在這裏,你需要使用global關鍵字
def foo():
global i
i = 'world'
同樣對於s。分配意味着你孃家的global
關鍵字有
def goo():
global s
s = 2
當然,你可以改變可變對象,所以往往你並不需要讓他們的全球
i = [1]
def foo():
i[0] = 2
但你仍然需要做i
全球如果你想重新綁定到不同的對象
你聽起來很困惑。 –
你知道PyIntObjects,而不是範圍規則,這很奇怪。 – user2357112
可能的重複[在Python中,爲什麼函數可以修改調用者感覺到的一些參數,但不是其他人?](http://stackoverflow.com/questions/575196/in-python-why-can-a-function -modify-一些論點,作爲感知,由這主叫方) – delnan