Python参数传递方式详解
发布时间:2023-06-30 01:16:20
Python中参数传递方式有两种:传值(值传递)和传引用(引用传递)。
传值是指在函数调用时,将实际参数的值复制给形式参数,即在函数内部修改形式参数的值不会影响实际参数的值。这是因为在函数调用时,实际参数和形式参数是两个独立的变量,存储在不同的内存地址上。
例如:
def change_value(a):
a = 10
b = 5
change_value(b)
print(b) # 输出 5
在这个例子中,将实际参数b传递给形式参数a时,实际参数的值被复制给了形式参数。在函数内部将形式参数的值修改为10时,并不会影响实际参数的值。
传引用是指在函数调用时,实际参数的地址被传递给形式参数,即在函数内部修改形式参数的值会影响实际参数的值。这是因为在函数调用时,实际参数和形式参数是指向同一块内存地址的变量。
例如:
def change_list(my_list):
my_list.append(4)
lst = [1, 2, 3]
change_list(lst)
print(lst) # 输出 [1, 2, 3, 4]
在这个例子中,将实际参数lst的地址传递给形式参数my_list时,实际参数和形式参数指向同一块内存地址。在函数内部使用my_list.append(4)将值4添加到了该地址对应的列表中,因此实际参数的值也发生了改变。
需要注意的是,虽然Python中的参数传递方式是传引用,但是如果在函数内部对形式参数进行重新赋值,会断开形式参数和实际参数之间的关联,即形式参数指向了新的内存地址。
例如:
def change_list(my_list):
my_list = [4, 5, 6]
lst = [1, 2, 3]
change_list(lst)
print(lst) # 输出 [1, 2, 3]
在这个例子中,函数内部将形式参数my_list重新赋值为一个新的列表[4, 5, 6],这样形式参数就指向了新的内存地址,与实际参数不再关联。
总结起来,参数传递方式在Python中是传引用,也就是说在函数内部对形式参数的改变会影响到实际参数的值。但是如果在函数内部对形式参数进行重新赋值,会断开形式参数和实际参数之间的关联。
