为什么这个程序改变了没有返回值的列表?

时间:2014-12-11 21:43:55

标签: python python-3.x

def main():
    a = [1, 2, 3]
    myFunc(a)
    print(a)

def myFunc(myList):
    myList[1] = 100

我正在为我的第一个关于python的compsci课程的最后一个学习。这个代码出现了,我不明白为什么当myFunc()没有返回值时列表的值会发生变化。为什么它不打印1,2,3?谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

Python列表是可变的。 Python函数通过赋值传递参数。当您致电main时,它会创建一个列表并将其与本地(main)名称a相关联。然后它调用myFunc,它将这个相同的列表指定为本地(myFunc)名称myList的值,这会改变它。 (即,没有列表的副本; myFunc正在使用相同的可变对象。)然后控制流回main,打印(现已更改)价值a

答案 1 :(得分:0)

我目前正在参加Python的入门课程,所以我会尽力回答这个问题。

简单地说,并非所有函数都需要返回值。

在你的函数MyFunc中,你有效地更改了列表而不必返回值。您只需采取额外步骤,使您的计划更有条理。如果你只是在main函数中包含了函数的内容,它就会一样。