Python 函数按引用调用(重复)
在许多编程语言中,参数可以按值传递,也可以使用特定保留字按引用传递。然而,在Python中,当参数传递给函数时,它永远不会修改调用函数中原始变量的值。
示例1:按值调用
k = 2
def foo(n):
n *= n
return n
j = foo(k)
print(j) # 4
print(k) # 2
此处,调用 foo 函数后 k 的值保持不变,因为 Python 按值传递参数。
示例 2:通过 Global 调用
要修改调用函数中的变量,可以使用global关键字。
n = 0
def foo():
global n
n *= n
return n
在这种情况下,全局关键字允许在 foo 函数内修改 n,并且其值将在调用函数中更新。
通过 Object Reference 中的传递然而,Python
Python 并不严格遵循按值调用或按引用调用。相反,它采用了一个称为“按对象引用传递”的概念。
在 Python 中,变量引用对象,而不是对象本身。因此,当变量传递给函数时,它传递的是对象的引用,而不是对象本身。
例如:
def append_one(li):
li.append(1)
x = [0]
append_one(x)
print(x) # [0, 1]
在此代码中,append_one 函数将 1 追加到列表 x 中。由于列表是通过对象引用传递的,因此函数内对列表所做的任何更改都将反映在调用函数中。
按引用传递与按对象引用传递
总之,Python 遵循通过对象引用传递,其中变量引用对象而不是对象本身。这允许函数修改传递给它们的对象,但对变量引用本身的更改不会传播回调用函数。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3