当函数修改外部变量时

时间:2016-01-12 13:57:40

标签: python variables

在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 个答案:

答案 0 :(得分:0)

Python的list类定义__add__,它控制x + y的行为,并定义__iadd__,它控制x += y的行为}。这些实现指定x + y创建新列表,x += y修改列表x。据推测,这似乎是人们使用这些操作的最可能的意图。