传递的参数内存上下文

Passed argument memory context

我在编码时遇到了这个问题:

def interpret(command): 
    # comment1: command.replace("()","o").replace("(al)","al") 
    # comment2: print(command)

    res = command.replace("()","o").replace("(al)","al")
    print(res)

interpret("G()(al)")

在上面的代码中,我希望字符串在 'comment1' 处被替换,但是,我得到了作为参数传递的相同值,即“G()(al)”,但是将它存储在不同的位置(这里,'res')我能够得到预期的结果。

能否请您指出是什么让 Python 记住了 'command' 原始值,或者是否有类似 JavaScript 的闭包,或者我看不到这里的简单点?

根据 official documentation:

str.replace(old, new[, count])

Return a copy of the string with all occurrences of substring old replaced by new. If the optional argument count is given, only the first count occurrences are replaced.

意味着为要存储的数据创建了一个新字符串。并且由于您没有将替换操作的结果存储回 command 参数,因此永远不会使用该结果。将数据存储在另一个变量 res 中也可以,如果您想对 command 执行多个操作,您以后可能会 re-arrange 。