gpt4 book ai didi

python - 函数内部变量的赋值会改变外部的赋值 - Python

转载 作者:行者123 更新时间:2023-11-30 22:06:49 25 4
gpt4 key购买 nike

我从使用 Matlab 转向使用 Python,使用函数时的变量赋值让我感到困惑。

我的代码如下:

a = [1,1,1]

def keeps(x):
y = x[:]
y[1] = 2
return y

def changes(x):
y = x
y[1] = 2
return y

aout = keeps(a)
print(a, aout)

aout = changes(a)
print(a, aout)

第一个 print 语句给出 [1, 1, 1] [1, 2, 1], while

第二个给出[1, 2, 1] [1, 2, 1]

我有一个理解(来自 Matlab):函数内变量的操作是局部的。但在这里,如果我不在函数内部复制变量,则函数外部的值也会发生变化。这几乎就像变量被定义为全局变量一样。

如果有人可以解释变量如何在这两种方法中进行不同的分配,以及如果想要将变量发送到函数而不影响函数外部的值,最佳实践是什么,这将非常有帮助?谢谢。

最佳答案

参数传递是通过赋值完成的。在更改中,隐式发生的第一件事是
当您调用 changes(a) 时,x = a。由于分配永远不会复制数据,因此您会改变a

keeps 中,您不会改变参数列表,因为 x[:] 正在创建一个(浅)副本,其名称为 y被分配给。

我强烈建议观看Facts and Myths about Python names and values .

关于python - 函数内部变量的赋值会改变外部的赋值 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52629354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com