Python函数的参数传递方式
发布时间:2023-12-04 00:06:44
在Python中,函数参数的传递可以通过值传递(call by value)和引用传递(call by reference)两种方式。
1. 值传递:
在值传递方式中,函数在调用时会创建一个局部变量,这个局部变量被赋予了传递进来的实际参数的值。函数对这个局部变量进行操作不会影响到原来的实际参数的值。这是因为Python中的数字、字符串和元组是不可变的,所以在传递过程中不会改变其值。
示例代码:
def change_value(num):
num = 10
value = 5
change_value(value)
print(value) # 输出 5
2. 引用传递:
在引用传递方式中,函数在调用时不会创建实际参数的副本,而是直接使用实际参数的引用。这意味着函数对这个引用所指向的对象进行的任何操作都会影响到原来的实际参数。
示例代码:
def change_list(lst):
lst.append(4)
my_list = [1, 2, 3]
change_list(my_list)
print(my_list) # 输出 [1, 2, 3, 4]
需要注意的是,对于可变对象(如列表、字典)的引用传递,函数内部对这个对象的修改会影响到原来的实际参数。而对于不可变对象(如数字、字符串、元组)的引用传递,函数内部的修改不会改变原来的实际参数,而是返回一个新的对象。
另外需要注意的是,默认情况下,函数的参数传递方式是引用传递。如果想要实现值传递,可以通过将参数进行复制来实现。
示例代码:
def change_value(num):
num = 10
value = 5
change_value(value)
print(value) # 输出 5
def change_value(num):
num = 10
value = 5
change_value(value.copy())
print(value) # 输出 5
总结而言,在Python中,函数的参数传递方式可以是值传递或引用传递。对于不可变对象来说,采用值传递,函数内部对这个对象的修改不会影响到原来的实际参数。对于可变对象来说,采用引用传递,函数内部对这个对象的修改会影响到原来的实际参数。
