标签:python 驻留 30 内存空间 vv print 机制 id
1. 简介
申明一个内存空间,后续申明相同的值,不会再开辟一块新的内存空间,指向已有的内存空间
2.适用类型
1. str
2. int
3. bool
3.实现原理
1. 系统维护一个记录驻留对象的字典
2. 当某个对象需要驻留,查看在字典中是否存在,若存在就指向已存在的内存空间;
3. 新驻留对象不存在于该字典中,开辟内存空间,记录该对象
4.驻留时机
1. 所有长度为 0 和长度为 1 的字符串都被驻留
2. 字符串只在编译时进行驻留,而非运行时
3. 字符串中只包含字母,数字或下划线时将会驻留
4. 字符串长度不超过20位
5.测试
# str
one = 'ffffffffffffffffffff'
two = 'ffffffffffffffffffff'
print(id(one), id(two)) # 42768184 42768184
# int
three = 34567
four = 34567
print(id(three), id(four)) # 4697808 4697808
# bool
five = True
six = True
print(id(five), id(six)) # 497676512 497676512
# 超过20位
vv = "s" * 30
bb = "s" * 30
print(id(vv), id(bb)) # 35820848 35821088
# 自己手动驻留
import sys
vv = sys.intern("s" * 30 + "666")
bb = sys.intern("s" * 30 + "666")
print(id(vv), id(bb)) # 38382824 38382824
5.优劣势
优势:减小内存开销,省略申请内存空间的过程,提高执行效率
劣势:创建驻留对象需要花费额外的开销
标签:python,驻留,30,内存空间,vv,print,机制,id 来源: https://www.cnblogs.com/quqinchao/p/14543542.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。