2016-01-12 38 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。据推测,这些似乎是人们使用这些操作的最可能的意图。