栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

Python何时为相同的字符串分配新的内存?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python何时为相同的字符串分配新的内存?

Python语言的每种 实现 都可以自由地在分配不可变对象(例如字符串)中进行权衡取舍-
制作一个新对象,或者找到一个现有的相等对象并使用一个以上引用,对于该语言而言,观点看法。当然,在实践中,现实世界中的实现会做出合理的折衷:在找到这样的对象时,再引用一个合适的现有对象既便宜又容易,如果要找到合适的现有对象(可能会可能不存在)看起来可能需要很长时间才能搜索到。

因此,例如,在一个函数中多次出现相同字符串文字(在我所知道的所有实现中)将使用“对同一对象的新引用”策略,因为在构建该函数的常量池时,它非常容易快捷避免重复;但是跨
单独的
功能执行此操作可能是一项非常耗时的任务,因此现实世界中的实现要么根本不执行此操作,要么仅在某些启发式确定的情况子集中做到这一点,而这些子集可以希望我们合理地权衡编译时间(通过搜索相同的现有常量而降低)与内存消耗(如果不断制作新的常量副本会增加内存消耗)。

我不知道Python的任何实现(或与此有关的其他具有常量字符串的语言,例如Java)在从文件中读取数据时会麻烦识别可能的重复项(以通过多个引用重用单个对象),
-这似乎不是一个有希望的折衷办法(在这里您要付出 运行时的 费用,而不是 编译
时的费用,所以这种折衷的吸引力就更小了)。当然,如果您知道(由于应用程序级别的考虑)这样的不可变对象很大并且很容易发生很多重复,则可以很容易地实现自己的“常量池”策略(实习生可以帮助您为字符串做这件事,但是不难为自己而作,例如具有不可变项的元组,巨大的长整数,



转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号