为什么python不使用赋值更新外部参数?

时间:2015-03-30 21:09:46

标签: python parameter-passing nonetype

有人可以解释为什么python在以下两种情况下表现不同的原因吗?非常欣赏。

def modifyNone(x):
    print("B4:"+str(x))
    # x.append(5)
    x=[5]
    print("In:"+str(x))

a = []
modifyNone(a)
print("After:"+str(a))

输出:

B4:[]
In:[5]
After:[]

方法:

def modifyNone(x):
    print("B4:"+str(x))
    x.append(5)
    # x=[5]
    print("In:"+str(x))

a = []
modifyNone(a)
print("After:"+str(a))

输出:

B4:[]
In:[5]
After:[5]

1 个答案:

答案 0 :(得分:3)

Python是按值传递的,因此您必须重新分配返回的值,如下所示:

a = modifyNone(a) # where the function returns a value

您似乎也不了解变量范围,请尝试使用文档。