首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
简单解释Python的字符串驻留机制。
[问答题]
简单解释Python的字符串驻留机制。
添加笔记
求解答(0)
邀请回答
收藏(70)
分享
纠错
4个回答
添加回答
3
TimeMac
字符串驻留定义:
在计算机科学中,字符串驻留一种仅保存一份相同且不可变字符串的方法。不同的值被存放在字符串驻留池中。
字符串驻留限制
:
仅包含
下划线(_)、字母和数字
的字符串会启用字符串驻留机制驻留。因为解释器仅对看起来像python标识符的字符串使用intern()方法,而python标识符正是由下划线、字母和数字组成。
python只会针对整数范围为[-5, 256]的整数启用字符串驻留
字符串驻留机制的优缺点
如下:
优点
:能够提高一些字符串处理任务在时间和空间上的性能,
缺点
:在创建或驻留字符串时的会花费更多的时间。
举例:string1 = “aabbcc”
string2 = “aabbcc”
使用id(string1)和id(string2)得到的内存地址是一样的。
编辑于 2018-09-27 10:31:32
回复(0)
1
创始元灵
- 字符串驻留是一种仅保存一份相同且不可变字符串的方法。
- 原理
- 系统维护interned字典,记录已被驻留的字符串对象。
- 当字符串对象a需要驻留时,先在interned检测是否存在,若存在则指向存在的字符串对象,a的引用计数减1;
- 若不存在,则记录a到interned中。
- 优点
- 在字符串比较时,节省大量内存。非驻留比较效率为o(n),驻留时比较效率为o(1)。
- 驻留情况
- 字符串只在编译时进行驻留,而非运行时。
- 字符串长度为0和1时,默认都采用了驻留机制。
- 字符串>1时,且只含大小写字母、数字、下划线时,才会默认驻留。
- 用乘法得到的字符串
- 乘数为1时
- 仅含大小写字母、数字、下划线,默认驻留。
- 含其他字符串
- 长度<=1,默认驻留。
- 长度>1,默认不驻留。
- 乘数大于1时
- 仅含大小写字母、数字、下划线,长度<=20,默认驻留
- 仅含大小写字母、数字、下划线,长度>20,默认都不驻留
- 其他字符串时,和长度无关,不驻留。
- 字符串被sys.intern() 指定驻留。
- [-5, 256]之间的整数数字,Python默认驻留。
发表于 2019-07-08 10:27:53
回复(0)
0
diandianlv
小整数池~
发表于 2018-11-02 17:06:55
回复(0)
0
爱吃萝卜叶叶的毛毛虫
-5~256
发表于 2018-09-27 07:35:12
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Python
上传者:
小小
难度:
4条回答
70收藏
5548浏览
热门推荐
相关试题
数据链路层滑动窗口机制中发送窗口(...
网络基础
评论
(1)
供受文者使用的具有法定效用的正式文...
京东
产品运营
2018
常识判断
行政
评论
(1)
有关linux线程的描述,正确的是...
京东
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
用一种动物介绍你自己
通用能力
评论
(1)
请你说几个海量数据存储常见问题以及...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题