调用方法有什么作用?

Tim*_*tam 0 python string

好的,noob问题

我有这个代码

           list = ['random', 'set', 'of', 'strings']
           for item in list:
               item.replace('a','b')

           print list
Run Code Online (Sandbox Code Playgroud)

除非我将代码更改为此输出,否则输出不会显示替换

            list = ['random', 'set', 'of', 'strings']
            for item in list:
                item = item.replace('a','b')

            print list
Run Code Online (Sandbox Code Playgroud)

所以我的问题是到底发生了什么?为什么第一个例子没有自动分配?

ang*_*son 5

该方法只是返回新值,它不会修改现有值.

没有设置规则指定所有或没有方法都会执行此操作,您必须检查每个方法的文档以明确知道它的作用和期望.

很多功能都是这样的.

拿着这个:

a = 1
b = 2
c = Add(a, b)
Run Code Online (Sandbox Code Playgroud)

你希望a或b在这一点上有新值吗?这是完全相同的事情.

现在,说了这么多,您的代码还有另一个问题.在任何情况下,该列表都不会实际更改.

为什么?因为您没有更新列表,所以您正在更新项目.

item是列表中值的"副本".这不是严格正确的,但它足以满足这个答案(了解更多信息参考参考资料).

换句话说,如果您将两个示例更改为:

list = ['random', 'set', 'of', 'string']
for item in list:
    item.replace('a','b')
    print item
Run Code Online (Sandbox Code Playgroud)

list = ['random', 'set', 'of', 'string']
for item in list:
    item = item.replace('a','b')
    print item
Run Code Online (Sandbox Code Playgroud)

然后你会看到一个区别.

回答评论中的后续问题:如果你没有将结果存储在任何地方,它就会丢失.可以这样想:你打电话给你的朋友,问他的手表什么时间.他说"10:45",你回答"实际上我并不关心点击".