如何完全改变Python中传递给函数的字符串?

问题描述 投票:0回答:2

我想将变量传递给函数进行更改,如下所示:

def change(x):
    x="changed!"

y="hello"
change(y)
print(y) # hello

这是因为你只能在传递时mutate变量,但是如何才能完全改变变量呢?

python parameter-passing
2个回答
0
投票

您可以在函数中添加一个全局变量,如下所示:

def change():
    global y
    y="changed!"

y="hello"
change()
print(y)

但是,我真的不推荐这样做,因为它可能会导致以后出现小错误。


0
投票

Python 中有一些数据类型是不可变的(无法修改)。其中包括字符串、整数、浮点数、元组……当您将不可变数据类型传递给函数时,Python 会自动按值传递它,而不是按引用传递。这意味着您无法更改原始变量的值。

如果要更改值,通过原始变量名称引用,则需要返回一个值并将其分配给同名的源变量。在后台,Python 实际上正在创建一个具有相同名称的不可变变量的新实例,并将其设置为新值。

def change(x):
    x="changed!"
    return x

y = "hello"
y = change(y)
print(y) # changed!
© www.soinside.com 2019 - 2024. All rights reserved.