更新时间:2023年03月27日14时19分 来源:传智教育 浏览次数:
在Python中,参数传递是按引用调用(也称为按对象传递),而不是按值调用。这意味着函数接收的是传递对象的引用,而不是对象的值本身。在函数内部对传递的对象进行的任何更改都将在调用者中反映出来。
下面是一个例子来说明这个问题:
def change_list(lst): lst.append(4) my_list = [1, 2, 3] change_list(my_list) print(my_list) # 输出 [1, 2, 3, 4]
在这个例子中,我们定义了一个函数change_list,它接收一个列表参数lst并将值4添加到该列表中。然后我们创建一个名为my_list的列表,调用change_list函数并将my_list作为参数传递。最后,我们在主程序中打印my_list的值,发现它已经被修改了,添加了值4。
这是因为在Python中,my_list的值实际上是一个指向列表对象的引用,当它被传递给change_list函数时,实际上传递的是该引用。在函数内部,我们可以通过这个引用来访问和修改列表对象,而这些修改会反映在调用者中。
需要注意的是,虽然Python中的参数传递是按引用调用,但是对于不可变类型的参数(例如数字、字符串和元组),修改操作会创建一个新的对象,而不是在原始对象上进行修改。因此,即使传递的是不可变类型的参数,也不能说Python中是按值调用。