Python函数的参数传递方式:值传递与引用传递
发布时间:2023-12-03 01:17:32
在Python中,函数的参数传递方式主要有两种:值传递和引用传递。
值传递是指在函数调用时,将实际参数的值复制一份,然后传递给形式参数,函数内部对形式参数的修改不会影响到实际参数。在值传递中,函数内部的操作不会改变外部的数据。
引用传递是指在函数调用时,将实际参数的引用(地址)传递给形式参数,形式参数和实际参数指向同一个对象,函数内部的操作会影响到实际参数。在引用传递中,函数内部的操作可能会改变外部数据。
在Python中,基本类型(如int、float、str等)是通过值传递方式进行参数传递的。这意味着函数内部对形式参数的修改不会影响到实际参数。
例如:
def func(x):
x = 5
num = 10
func(num)
print(num) # 输出10
在这个例子中,将变量num作为实际参数传递给函数func,函数内部将形式参数x的值修改为5,但是并没有影响到实际参数num的值。
而对于可变对象(如列表、字典等),是通过引用传递方式进行参数传递的。这意味着函数内部对形式参数的修改会影响到实际参数。
例如:
def func(lst):
lst.append(4)
my_list = [1, 2, 3]
func(my_list)
print(my_list) # 输出[1, 2, 3, 4]
在这个例子中,将列表my_list作为实际参数传递给函数func,函数内部通过引用修改了形式参数lst的值,使其添加了元素4,同时也改变了实际参数my_list。
需要注意的是,在Python中,即使是可变对象,如果在函数内部对形式参数进行重新赋值,会创建一个新的对象,此时不会影响到实际参数。
例如:
def func(lst):
lst = [1, 2, 3]
my_list = [1, 2, 3]
func(my_list)
print(my_list) # 输出[1, 2, 3]
在这个例子中,虽然在函数内部将形式参数lst重新赋值为[1, 2, 3],但是并没有改变实际参数my_list,因为重新赋值创建了一个新的对象。
总结来说,Python中的函数参数传递方式可以简单归纳为:基本类型通过值传递,可变对象(如列表、字典等)通过引用传递。了解这种参数传递的方式有助于理解函数调用时的数据传递机制和避免出现意外的情况。
