您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

CPython字符串添加优化失败案例

CPython字符串添加优化失败案例

在基于列表的方法中,从列表索引0开始的字符串被获取修改,然后再放回到索引0处的列表中。 由于这短暂的时间,解释器在列表中仍然具有旧版本的字符串,并且不能就地执行修改。 如果您查看Python的源代码,那么您会发现不支持在适当位置修改列表的元素。因此,必须从列表中检索对象(在这种情况下为字符串),进行修改然后放回去。 换句话说liststr类型与+=操作员的类型支持完全无关。

并考虑以下代码

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'

python 2022/1/1 18:45:19 有436人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶