我想将变量传递给函数进行更改,如下所示:
def change(x):
x="changed!"
y="hello"
change(y)
print(y) # hello
这是因为你只能在传递时mutate变量,但是如何才能完全改变变量呢?
您可以在函数中添加一个全局变量,如下所示:
def change():
global y
y="changed!"
y="hello"
change()
print(y)
但是,我真的不推荐这样做,因为它可能会导致以后出现小错误。
Python 中有一些数据类型是不可变的(无法修改)。其中包括字符串、整数、浮点数、元组……当您将不可变数据类型传递给函数时,Python 会自动按值传递它,而不是按引用传递。这意味着您无法更改原始变量的值。
如果要更改值,通过原始变量名称引用,则需要返回一个值并将其分配给同名的源变量。在后台,Python 实际上正在创建一个具有相同名称的不可变变量的新实例,并将其设置为新值。
def change(x):
x="changed!"
return x
y = "hello"
y = change(y)
print(y) # changed!