为什么这些都不一样

时间:2018-05-14 22:42:27

标签: python python-3.x

为什么这两个人没有相同的结果。此函数的目的是用定义的字符串(y)替换s(x)的值。这纯粹是为了理解/练习使用函数。

s = "a"

def func(x,y):
    x = x.replace(x,y)
    print(s)

func(s,"b")

s = "a"
s = s.replace(s,"b")
print(s)

2 个答案:

答案 0 :(得分:2)

您可能希望在x函数内打印func而不是s。你发现你打印的是相同的值。

s = "a"

def func(x,y):
    x = x.replace(x,y)
    print(x)

func(s,"b") # prints 'b'

s = "a"
s = s.replace(s, "b")
print(s)    # prints 'b'

答案 1 :(得分:0)

字符串在Python中是不可变的。 replace()不修改给定的字符串,它返回一个新字符串。所以当你这样做时:

x = x.replace(x, y)

在第一个函数中,它创建一个新字符串并将其分配给局部变量x。原始变量s中的字符串不受影响。

此外,函数参数按值传递,而不是通过引用传递。因此,在函数中分配给x不会分配给外部变量s