Python函数是否修改了它们的参数?

时间:2014-10-09 21:35:43

标签: python list function

今天我在我的计算机科学课上,老师在棋盘上放了一段蟒蛇编码,说他无法弄清楚为什么它不起作用。他向我们展示了职能并说:

def app(x):
    x.append(" ")
    print(x)

def ext(x,y):
    x.extend(y)
    print(y)

nums = [1,2,3,4,5,6]
numbers = [7,8,9,10]

app(nums)
ext(nums,numbers)

print("End of program")

该代码旨在说明您何时不键入

return x

在函数中然后当你返回主程序时变量不会改变,但是当他运行程序时,第一个函数添加了空格并在返回时保留它,导致打印下面的文本...

['1','2','3','4','5','6',' ']
['1','2','3','4','5','6',' ','7','8','9','10']
End of program

请帮帮我。

2 个答案:

答案 0 :(得分:2)

你说的重点是证明列表不会被更改,除非它被返回。那是错误的。该列表是一个可变对象。当您将它(按名称)传递给某个函数并进行更改时,它将被更改。如果您不想要更改,则需要使用副本。

答案 1 :(得分:0)

def app(x):
    return x + [" "]


def ext(x,y):
    return x + y

可能就是你要做的...我不确定,这不会改变任何一个原始列表,但会返回一个新列表作为结果