python 小数据池、代码块详解
2018-08-09 15:58
429 查看
首先我们来看看下面的问题,第一次遇到还以为见鬼了。
看到上面这么多种情况刚开始直接就懵逼了。100ID一样,1000就不一样。终端运行情况居然会和pycharm不一样。
后面终于搞懂了,原来这里头有大学问,且看下面分析。
一、代码块
Python程序是由代码块构造的。块是一个python程序的文本,他是作为一个单元执行的。 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块。 而作为交互方式输入的每个命令都是一个代码块。
也就是说:
所以这就很好解释上面的情况了。但是当a,b的值为100时,在终端居然ID一致,这用代码块来解释根本就解释不通,所以得引出一个新的知识点,那就是数据池,。
二、小数据池
小数据池,也称为小整数缓存机制,或者称为驻留机制等。小数据池里只有三种数据类型:整数,字符串,布尔值
python会将一定规则的字符串在字符串驻留池中,创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。
使用小数据池的优点:能够提高一些字符串,整数在时间和空间上的性能;需要值相同的字符串,整数的时候,直接从‘池’里拿来用,避免频繁的创建和销毁,提升效率,节约内存。
1、关于整数
小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。但是超过这范围的数字,就不会加入数据池。
2、关于字符串
字符串要重几个大方面来进行讨论。
2.1:字符串的长度为0或者1,默认都采用了驻留机制(小数据池)。
2.2,字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留。
3.3,用乘法得到的字符串,分两种情况。
33.1 乘数为1时:默认驻留;
3.3.2乘数>=2时:仅含大小写字母,数字,下划线,总长度<=20,默认驻留
4、指定驻留
from sys import intern a = intern('hello!@'*20) b = intern('hello!@'*20) print(a is b) #指定驻留是你可以指定任意的字符串加入到小数据池中,让其只在内存中创建一个对象,多个变量都是指向这一个字符串。
相关文章推荐
- 【详解】Python接收json数据联合java代码解密
- Python heapq使用详解及实例代码
- 详解如何利用Cython为Python代码加速
- python多进程使用及线程池的使用方法代码详解
- 机器学习----K-近邻算法(Python代码详解)
- Python运算符重载详解及实例代码
- Python - 字符串(string) 详解 及 代码
- Python 代码调试技巧(图文详解)
- 超实用python小项目--基于python的手机通讯录二维码生成网站--2、python代码详解
- Python学习笔记(15)-Python代码转换为exe可执行程序详解
- 深入理解Python 代码优化详解
- Python - 格式化(format())输出字符串 详解 及 代码
- Python - 字符串(string) 详解 及 代码
- Python - 继承(Inheritance) 详解 及 代码
- 详解字典树Trie结构及其Python代码实现
- Google的Python代码格式化工具YAPF详解
- 数据挖掘之Apriori算法详解和Python实现代码分享_python
- Python实现霍夫圆和椭圆变换代码详解
- Python - 列表(list) 的 详解 及 代码
- Python - 字典(dict) 详解 及 代码