Python函数中的参数传递方式和含义
发布时间:2023-07-05 22:27:41
在Python中,参数传递方式有两种:传值调用和传引用调用。这两种方式决定了在函数调用时,如何将参数传递给函数。
1. 传值调用:
在传值调用中,形参接收的是实参的一个副本,函数使用这个副本进行操作,不会影响到实参本身。这意味着函数内对形参的修改不会影响到实参。
示例:
def func(x):
x = x + 1
print('内部:', x)
a = 1
func(a)
print('外部:', a)
输出:
内部: 2 外部: 1
在这个例子中,函数func接收一个参数x,将其加1后输出。然后在函数外部调用func(a),并输出实参a的值。可以看到,虽然函数内部修改了形参x的值,但并没有改变实参a的值。
2. 传引用调用:
在传引用调用中,形参接收的是实参的引用,即实参的内存地址。因此,函数内部对形参的修改将会影响到实参。
示例:
def func(lst):
lst.append(4)
print('内部:', lst)
a = [1, 2, 3]
func(a)
print('外部:', a)
输出:
内部: [1, 2, 3, 4] 外部: [1, 2, 3, 4]
在这个例子中,函数func接收一个列表参数lst,将数字4追加到列表中后输出。然后在函数外部调用func(a),并输出实参a的值。可以看到,函数内部对形参lst的修改同样影响到了实参a。
在函数调用中,默认参数传递方式为传值调用,而可变对象作为参数时则使用传引用调用。可变对象包括列表、字典等,而不可变对象包括数字、字符串等。这是因为对于可变对象,函数内部可以修改对象的值,而对于不可变对象,函数内部不能修改对象的值。
对于传值调用,虽然不能直接修改对象的值,但可以通过函数返回值来达到类似的效果。
总结起来,Python中的参数传递方式有传值调用和传引用调用两种。传值调用传递的是实参的副本,对形参的修改不会影响实参本身,而传引用调用传递的是实参的引用,对形参的修改会影响实参。默认参数传递方式为传值调用,而可变对象作为参数时使用传引用调用。
