如何解决python中如何为不同的数据类型分配内存?
我注意到,对于整数和字符串:
a=1 ; b=1
c='abc' ; d='abc'
print(id(a),id(b))
print(id(c),id(d))
在这种情况下,a
将与 b
共享相同的内存地址,c
将与 d
共享相同的内存地址
另一方面,对于列表,设置...等:
e=[1,2,3] ; f=[1,3]
g=(1,3) ; h=(1,3)
i={1,3} ; j={1,3}
k={"a":1,"b":2} ; l={"a":1,"b":2}
print(id(e),id(f))
print(id(g),id(h))
print(id(i),id(j))
print(id(k),id(l))
在这种情况下,e
不会与f
共享相同的内存地址,g
不会与h
共享相同的内存地址......等等。
所以我想问:
- python 为不同的数据类型分配内存有什么原则吗?
- python 官方文档对此有解释吗? (我找不到)
谢谢
解决方法
仅针对整数的部分答案:由于使用频率的原因,Python 缓存会在内存中重用某些整数值。例如,数字 1-256 以这种方式存储,这就是指向这些值的不同变量将具有相同 id 的原因。较大的数字,例如 257,是动态分配的,尽管是不可变的,但不会共享相同的 id。
示例:
a = 256
b = 256
print(id(a),id(b))
a = 257
b = 257
print(id(a),id(b))
输出:
2038199456 2038199456
21831936 21832816
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。