-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