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

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]

总结:

- 当函数内对参数进行修改时,如果参数是不可变对象,函数内的修改不会影响到实参;如果参数是可变对象,函数内的修改会影响到实参。

- 如果希望在函数内部修改实参的值,应该使用传引用的方式;如果不希望修改实参的值,应该使用传值的方式。

- 在使用传引用方式时要注意,函数内重新给形参赋值会改变实参的引用。