欢迎访问宙启技术站
智能推送

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中是传引用,也就是说在函数内部对形式参数的改变会影响到实际参数的值。但是如果在函数内部对形式参数进行重新赋值,会断开形式参数和实际参数之间的关联。