Python 中的驻留机制:小数据池和代码块
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python 中的驻留机制:小数据池和代码块,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1987字,纯文字阅读大概需要3分钟。
内容图文
![Python 中的驻留机制:小数据池和代码块](/upload/InfoBanner/zyjiaocheng/640/fa3d7ebcca46488cabade1e9e7768f35.jpg)
Python 中的驻留机制:小数据池和代码块
Python 中的驻留机制主要有两个:小数据池和代码块。驻留机制并不是学习 Python 过程中特别重要的概念,我们学习小数据池的目的主要有两个方面:
- 解决日后写代码过程中可能出现的疑惑。在后期开发中,能
明确
知道有些代码为什么不能正常使用 - 找工作面试时或多或少可能被问到,关键时刻起到装 X 的作用
先补充一个关键字 is
。is(是)
和 ==(等于)
的作用十分相似,我们在这里将它们进行一个对比:
== :
官方:判断等号两边的内容是否相同
白话:判断两个人的长相是不是一样
is :
官方:判断两边的内容是不是同一个
白话:判断这两个人是不是同一个人
is
是通过 内存地址
进行判断,如果 内存地址
相同,返回 True
;内存地址不同,返回 False
。
有了上面的补充,我们来看下面的这个例子:
a = 1000
b = 1000
print(a == b)
print(id(a), id(b))
print(a is b) # 判断a是不是b
在PyCharm中的运行结果是:
True
2565251570544 2565251570544
True
在终端中的运行结果是:
True
1407133449136 1407133448880
False
在 PyCharm 中运行时我们发现,虽然 a 和 b 分别赋值 1000,它们在内存中的地址居然是相同的。而在终端中运行同样的代码,却又得到了 a 与 b 不相同的结果。
这是 Python 中的驻留机制造成的影响。Python 中,为了节省内存,会将一些小的数据驻留,当再次有变量获得相同的赋值时,不会开辟新的内存空间,而是指向原有的值所处的内存空间。
在 PyCharm 中运行的是一个 py 文件,是一个代码块。在代码块中,只要是大于 -5 的数字都共用同一个内存地址。而在终端中每一行分别为一个代码块,两个赋值操作共用一个小数据池。在小数据池中,只有在 -5 ~ 256 范围的数字才会被驻留。
小数据池和代码块的缓存机制是这样的:
终端中测试的是小数据池的缓存机制:
数字:-5 ~ 256
字符串:
定义时内容不能为中文和特殊符号,长度不限,只要内容相同,就会进行驻留
Python 3.6解释器字符串进行乘法时,也不能有中文字符和特殊符号,总长度不能超过20
Python 3.7解释器字符串进行乘法时,不能有中文字符和特殊符号,总长度不能超过4096
PyCharm中测试的是代码块的缓存机制:
数字:-5 ~ 正无穷
字符串:
定义内容、长度均不限,只要内容相同,就会驻留
字符串进行乘法时,不能有中文字符和特殊符号,总长度不能超过20
对于字符串总长度的驻留情况,可以这样检验:
a = 'alex' * 6
b = 'alex' * 6
print(a is b)
内容总结
以上是互联网集市为您收集整理的Python 中的驻留机制:小数据池和代码块全部内容,希望文章能够帮你解决Python 中的驻留机制:小数据池和代码块所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。