Python函数传参:传值和传引用的区别
发布时间:2023-09-11 23:59:30
Python中的函数参数传递有两种方式:传值和传引用。
传值是指将参数的值复制一份给函数中的形参,函数内对形参的修改不会影响到实参。当传递的参数是不可变对象(如数字、字符串、元组)时,使用传值方式。
传引用是指将参数的引用传递给函数中的形参,函数内对形参的修改会影响到实参。当传递的参数是可变对象(如列表、字典)时,使用传引用方式。
下面分别介绍传值和传引用的特点和使用场景。
1. 传值
传值方式将参数的值复制一份给函数中的形参,函数内对形参的修改不会影响到实参。
特点:
- 函数内对形参的修改不会影响到实参。
- 如果函数内重新给形参赋值,不会影响到实参。
使用场景:
- 当传递的参数是不可变对象(如数字、字符串、元组)时。
- 当希望在函数内部操作形参,但不影响到实参时。
示例代码:
def change_value(num):
num += 1
print("形参修改后的值:", num)
num = 10
change_value(num)
print("实参的值:", num)
输出结果:
形参修改后的值: 11 实参的值: 10
2. 传引用
传引用方式将参数的引用传递给函数中的形参,函数内对形参的修改会影响到实参。
特点:
- 函数内对形参的修改会影响到实参。
- 如果函数内重新给形参赋值,会改变实参的引用。
使用场景:
- 当传递的参数是可变对象(如列表、字典)时。
- 当希望在函数内部修改实参的值时。
示例代码:
def change_list(lst):
lst.append(4)
print("形参修改后的列表:", lst)
my_list = [1, 2, 3]
change_list(my_list)
print("实参的列表:", my_list)
输出结果:
形参修改后的列表: [1, 2, 3, 4] 实参的列表: [1, 2, 3, 4]
总结:
- 当函数内对参数进行修改时,如果参数是不可变对象,函数内的修改不会影响到实参;如果参数是可变对象,函数内的修改会影响到实参。
- 如果希望在函数内部修改实参的值,应该使用传引用的方式;如果不希望修改实参的值,应该使用传值的方式。
- 在使用传引用方式时要注意,函数内重新给形参赋值会改变实参的引用。
