-1
在Python中,例如,如果我寫:當一個函數修改的外部變量
def f(x,y):
x.append(y) #1
x += [y] #2
x = x+[y] #3
return x
x=[]
y=3
z=f(x,y)
只有操作1和2修改x的值(那將是[3,3]) 爲什麼呢? 有一個通用規則?
在Python中,例如,如果我寫:當一個函數修改的外部變量
def f(x,y):
x.append(y) #1
x += [y] #2
x = x+[y] #3
return x
x=[]
y=3
z=f(x,y)
只有操作1和2修改x的值(那將是[3,3]) 爲什麼呢? 有一個通用規則?
Python的list
類定義__add__
,它控制的x + y
的行爲,它定義__iadd__
,它控制的x += y
行爲。這些實現指定x + y
創建新列表,並且x += y
修改列表x
。據推測,這些似乎是人們使用這些操作的最可能的意圖。
實際上操作2會導致錯誤。 – jonrsharpe