在 Python 中,函数参数传递的方式是通过对象的引用进行传递。具体来说,Python 中的函数参数传递是按引用传递的,但是对于不可变类型和可变类型的处理方式稍有不同。
1. 不可变类型(如数字、字符串、元组)的传递方式:函数内部无法修改原始对象的值,而是创建了一个新的对象,并将其分配给函数的局部变量。因此,函数对不可变类型的修改不会影响到原始对象。
2. 可变类型(如列表、字典、集合)的传递方式:函数内部可以修改原始对象的值,因为可变类型是可变的,函数在操作时会直接修改原始对象。
下面通过例子来说明:
def modify_value(x, y):
x = x + 1
y.append(4)
a = 5
b = [1, 2, 3]
modify_value(a, b)
print(a) # 输出:5,不可变类型的值没有改变
print(b) # 输出:[1, 2, 3, 4],可变类型的值被修改了
在上面的例子中,函数 `modify_value` 接收两个参数 `x` 和 `y`,分别代表不可变类型和可变类型的对象。在函数内部,对 `x` 进行加法操作并赋值给新的对象,不会影响到原始的变量 `a` 的值。而对于 `y`,使用 `append` 方法在原始列表的基础上添加了一个新元素,导致原始的变量 `b` 的值被修改。
总结起来,Python 中的函数参数传递是通过对象的引用进行传递。对于不可变类型的参数,函数内部的修改不会影响原始对象;而对于可变类型的参数,函数内部的修改会直接影响原始对象。