2016-01-12 39 views
-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]) 爲什麼呢? 有一個通用規則?

+1

實際上操作2會導致錯誤。 – jonrsharpe

回答

0

Python的list類定義__add__,它控制的x + y的行爲,它定義__iadd__,它控制的x += y行爲。這些實現指定x + y創建新列表,並且x += y修改列表x。據推測,這些似乎是人們使用這些操作的最可能的意圖。