我从使用 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)
第一个打印语句给出[1, 1, 1] [1, 2, 1]
, while
第二个给出[1, 2, 1] [1, 2, 1]
.
我有一个理解(来自 Matlab):函数内变量的操作是局部的。但在这里,如果我不在函数内部复制变量,则函数外部的值也会发生变化。几乎就像变量被定义为global
.
如果有人可以解释变量在这两种方法中如何进行不同的分配,以及如果想将变量发送到函数而不影响函数外的值,最佳实践是什么,这将非常有帮助?谢谢。