python – 内存中来自`raw_input()`的字符串
发布时间:2020-12-20 11:25:38 所属栏目:Python 来源:网络整理
导读:我已经有一段时间知道 Python喜欢在内存中重用字符串而不是重复: a = "test" id(a)36910184L b = "test" id(b)36910184L 但是,我最近发现从raw_input()返回的字符串不遵循典型的优化模式: a = "test" id(a)36910184L c = raw_input()test id(c)45582816L
我已经有一段时间知道
Python喜欢在内存中重用字符串而不是重复:
>>> a = "test" >>> id(a) 36910184L >>> b = "test" >>> id(b) 36910184L 但是,我最近发现从raw_input()返回的字符串不遵循典型的优化模式: >>> a = "test" >>> id(a) 36910184L >>> c = raw_input() test >>> id(c) 45582816L 我很好奇为什么会这样呢?有技术原因吗? 解决方法
对我来说,似乎python实习字符串文字,但通过其他一些进程创建的字符串不会被实现:
>>> s = 'ab' >>> id(s) 952080 >>> g = 'a' if True else 'c' >>> g += 'b' >>> g 'ab' >>> id(g) 951336 当然,raw_input在不使用字符串文字的情况下创建新字符串,因此假设它不具有相同的id是完全可行的.有(至少)两个原因,为什么C-python实习字符串 – 内存(如果你不存储同一件事的一大堆副本,你可以保存一堆)和散列冲突的分辨率.如果2个字符串散列到相同的值(例如在字典查找中),则python需要检查以确保两个字符串都是等效的.如果它们没有被实现,它可以进行字符串比较,但如果它们被实现,它只需要进行指针比较,这样效率会更高一些. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |