为什么这些不是一样的

2024-04-20 10:50:15 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么这两个结果不一样呢。此函数的目的是用定义的字符串(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)

Tags: 函数字符串目的定义defreplacefuncprint
2条回答

您可能希望在func函数中打印x,而不是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'

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

x = x.replace(x, y)

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

此外,函数参数是通过值传递的,而不是通过引用传递的。因此在函数中赋值给x并不赋值给外部变量s。你知道吗

相关问题 更多 >