在基于列表的方法中,从列表索引0开始的字符串被获取并修改,然后再放回到索引0处的列表中。
由于这短暂的时间,解释器在列表中仍然具有旧版本的字符串,并且不能就地执行修改。
如果您查看Python的源代码,那么您会发现不支持在适当位置修改列表的元素。因此,必须从列表中检索对象(在这种情况下为字符串),进行修改然后放回去。
换句话说
list,
str类型与
+=操作员的类型支持完全无关。
并考虑以下代码:
l = ['abc', 'def']def nasty(): global l l[0] = 'ghi' l[1] = 'jkl' return 'mno'l[0] += nasty()
的值
l就是
['abcmno','jkl']这证明了
'abc'从列表中获取,则
nasty()得到了执行修改的列表中,字符串的内容
'abc'和
'mno'得到级联和结果被分配到
l[0]。如果
nasty()在访问之前对其进行了评估
l[0]以对其进行修改,那么结果将为
'ghimno'。



