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

Python函数中的参数是怎么传递的

发布时间:2023-07-21 20:57:44

在Python中,函数参数的传递可以通过两种方式:按值传递和按引用传递。

1. 按值传递:

当传递的参数是不可变对象,如数字、字符串和元组时,采用按值传递。在函数调用时,会新创建一个变量来存储参数的值,并将该变量传递给函数。这种传递方式不会影响原始变量的值。

示例代码:

def square(x):
    x = x ** 2
    print("In function:", x)

n = 5
square(n)
print("Outside function:", n)

输出:

In function: 25
Outside function: 5

在上面的例子中,函数square的参数x是一个不可变的对象,虽然在函数内部对x进行了修改,但是并不会影响外部变量n的值。

2. 按引用传递:

当传递的参数是可变对象,如列表和字典时,采用按引用传递。在函数调用时,不会创建新的对象,而是直接将参数的引用传递给函数。这意味着在函数内部对参数的修改会影响原始对象的值。

示例代码:

def change_list(lst):
    lst.append(4)

numbers = [1, 2, 3]
change_list(numbers)
print(numbers)

输出:

[1, 2, 3, 4]

在上面的例子中,函数change_list接受一个参数lst,在函数内部对lst进行修改并添加了一个元素4。由于列表是可变对象,所以函数执行后会改变外部变量numbers的值。

需要注意的是,虽然列表是可变对象,在函数内部对列表进行重新赋值时,并不会影响到外部变量的值。

示例代码:

def change_list(lst):
    lst = [4, 5, 6]

numbers = [1, 2, 3]
change_list(numbers)
print(numbers)

输出:

[1, 2, 3]

在上面的例子中,虽然函数内部对参数lst进行了重新赋值,但是并不会影响外部变量numbers的值。

总结起来,Python函数的参数传递方式由参数的类型决定。对于不可变对象,采用按值传递,即函数内部不会修改外部变量的值。对于可变对象,采用按引用传递,即函数内部对参数的修改会影响到外部变量的值。