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函数的参数传递方式由参数的类型决定。对于不可变对象,采用按值传递,即函数内部不会修改外部变量的值。对于可变对象,采用按引用传递,即函数内部对参数的修改会影响到外部变量的值。
