【补充】Python中的参数传递是值传递还是引用传递
- Python中的参数传递都是copy一份传递过去,由于一切皆对象,传过去的都是地址
- 在Python中又区分可变类型和不可变类型
- 可变类型在函数中修改会影响原始的值
- 不可变类型,不会影响原始的值
在Python中,参数传递是按对象引用传递的方式进行的,也可以称为"传对象引用"。
- 这意味着在函数调用时
- 参数的值不是直接传递给函数
- 而是传递了对象的引用(内存地址)。
- 当我们将一个对象作为参数传递给函数时
- 实际上传递的是该对象的引用(内存地址)。
- 函数内部可以通过该引用来访问和操作原始对象。
- 需要注意的是
- Python的对象分为可变(mutable)和不可变(immutable)两种类型。
- 对于不可变类型的对象(如整数、字符串、元组等)
- 无论是在函数内还是外部对它们进行修改
- 都会创建新的对象。
- 因此,看起来像是通过值传递。
- 对于可变类型的对象(如列表、字典等)
- 在函数内部对它们的修改会影响到原始对象的值
- 因为它们在内存中是可变的
- 而函数传递的是对象的引用。
- 下面通过示例代码演示参数传递的方式:
def update_list(lst):
lst.append(4)
my_list = [1, 2, 3]
update_list(my_list)
print(my_list) # 输出 [1, 2, 3, 4]
def update_string(str):
str += " World"
my_str = "Hello"
update_string(my_str)
print(my_str) # 输出 "Hello"
- 在第一个示例中
- 我们将一个列表对象传递给函数
- 并在函数内部修改了该列表。
- 这种修改会反映到原始列表对象上。
- 而在第二个示例中
- 我们将一个字符串对象传递给函数
- 并在函数内部进行了字符串拼接操作。
- 虽然函数内部的操作看起来修改了字符串
- 但实际上是重新创建了一个新的字符串对象
- 并没有改变原始的字符串对象。
- 我们将一个字符串对象传递给函数
综上所述,可以说Python的参数传递是按对象引用传递的方式进行的,具体表现根据对象的可变性而定。
标签:参数传递,函数,Python,传递,对象,my From: https://www.cnblogs.com/dream-ze/p/17580121.html