Python 代码块 小数据池

一  代码块

什么是代码块???

Python程序是由代码块构造的。先举一个例子:

1 for i in ‘12334567‘:
2     print(i)
1 def func():
2     print(‘Hello,world!‘)
1 class A:
2     name = ‘colin‘

从上面的例子可以称为代码块,虽然上面的缩进的内容都叫代码块,但是他们并不是python中严格定义的代码块。

那么,python中真正意义上的代码块又怎么定义?

因此,我们定义:一个模块,一个函数,一个类,一个文件等都是一个代码块。

此外,在电脑终端模式下,输入的每个命令我们也可以认为是一个代码块。如:

二  id, is , == 之间的关系

在Python中,id是什么?

我们可以理解为id是电脑的内存地址,当你利用id()内置函数去查询一个数据的内存地址,例如:

1 name = ‘colin‘
2 print(id(name))    # 1986166776248 

从上面的代码分析可知,当调用python中id()指令时,会输出变量name的内存地址,其地址位置为:1986166776248  ,第二次调用后,内存地址发生变化,为:1957356364216 。可知,变量在内存中地址是不固定的。

is 是什么? == 又是什么?

我们将is 用来判断两个变量的id值是否相等,而 ‘==’ 是表示该符号两边的数值是否相等。

如果内存地址相等,那么== 两边所指向的是同一个内存地址。

总的来说,我们总结为:如果is是True,那么== 一定是True

三  小数据池(缓存机制,驻留机制)

什么是小数据池?

小数据池也称为小整数缓存机制,或者称为驻留机制等等,主要是用于python对内存做的一个优化,通常将-5!~256的整数,以及一定规则的字符串,提前在内存中创建了池,容器,容器里固定的放入这些数。

小数据池的应用数据类型:整数,字符串,bool值。

而为什么要使用小数据池???

其优点主要有以下两点:

1. 节省内存,

2. 提高性能与效率。

python会将一定规则的字符串在字符串驻留池中,创建一份,当你将这些字符串赋值给变量时,并不会重新创建对象, 而是使用在字符串驻留池中创建好的对象。

int:对于整数来说,小数据池的范围是-5~256 ,如果多个变量都是指向同一个(在这个范围内的)数字,他们在内存中指向的都是一个内存地址。

str:字符串要从下面这几个大方向讨论:

1,字符串的长度为0或者1,默认都采用了驻留机制(小数据池)

2,字符串的长度>1,且只含有大小写字母,数字,下划线时,才会默认驻留。

3,用乘法得到的字符串,分两种情况。

  3.1 乘数为1时:

仅含大小写字母,数字,下划线,默认驻留。

含其他字符,长度<=1,默认驻留。

含其他字符,长度>1,默认驻留。

  3.2 乘数>=2时:

仅含大小写字母,数字,下划线,总长度<=20,默认驻留。

在大环境下的python3中:

str:内存(内部)编码方式为Unicode

bytes:python的基础数据类型之一,它和str相当于双胞胎,str拥有的所有方法,bytes类型都适用。

编码之间不能相互识别:

1. 由于编码之间不能相互识别。(由于:str 内部编码是以unicode方式。)

2. 网络传输,或者硬盘存储的01010101,必须是以非unicode编码方式的01010101.

如图:

# str --------> bites encode 编码

1 s1 = ‘colin‘
2 s2 = ‘明天‘
3 b1 = s1.encode(‘utf-8‘)
4 print(b1)    # b‘colin‘
5 b2 = s2.encode(‘gbk‘)
6 print(b2)     # b‘\xc3\xf7\xcc\xec‘

# bytes --------> str decode 解码

1 b1 = b‘\xc3\xf7\xcc\xec‘     # gbk的bytes
2 s2 = b1.decode(‘gbk‘)
3 print(s2)    # 明天

本文大量引用的地址为:

http://www.cnblogs.com/jin-xin/articles/9439483.html#4039042

原文地址:https://www.cnblogs.com/colin1314/p/9448688.html

时间: 2024-08-29 10:07:11

Python 代码块 小数据池的相关文章

pyhon学习第六天 代码块,小数据池(缓存机制,驻留机制),is == id =,字符编码

1.代码块 能够实现某项功能的:模块,函数,类,文件 ##在python的交互模式下,一行代码就是一个代码块分别储存在不同文件中 2. id is ==和= =是赋值 ==比较两边数据内容是否相等 is 比较内存地址是否一致(内存里的id都是唯一的) id() 查看数据的id地址 3.小数据池(缓存机制,驻留机制): 小数据池是python对内存做的一个优化 优化内容:python将-5到256的整数.以及一定规律的字符串提前在内存找那个创建了固定的储存空间 适用小数据池的数据类型:*****

python基础之小数据池、代码块、编码

一.代码块.if True: print(333) print(666) while 1: a = 1 b = 2 print(a+b) for i in '12324354': print(i) 虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块.python中真正意义的代码块是什么? 块是一个python程序的文本,他是作为一个单元执行的.代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而对于一个文件中的两个函数,也分别是两个不同的代码块: def fu

python 浅谈小数据池和编码

?. ?数据池 在说?数据池之前. 我们先看?个概念. 什么是代码块: 根据提示我们从官??档找到了这样的说法: A Python program is constructed from code blocks. A block is a piece of Python program text that is executed as a unit. The following are blocks: a module, a function body, and a class definiti

Python基础之小数据池及深浅拷贝

一.小数据池 == (等于) == 官方:判断等号两边的内容是否相同 ? 白话:判断两个人长得是不是一样 is ? 官方:判断两边的内容是不是一个 ? 白话:判断这两个人是不是一个人 a = 10000 b = 10000 print(a == b) is 是通过内存地址进行判断 print(id(a),id(b)) 输出结果 ,内存地址一致 代码块:一个py文件,一个函数,一个模块,一个类,交互模式(终端)下的每一行 先执行代码块,然后小数据池! 代码块机制内容:Python在执行同一个代码块

python基础之小数据池

关于池的概念,大家也许知道 连接池,代理池.然而现在我们提到的小数据池,则是一些Int和string已经创建好的并放在池子里等着我们去调用的对象. '''对于整数,Python官方文档中这么说: The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just

再谈编码---小数据池(概念)

1. 小数据池小数据池在说小数据池之前. 我们先看一个概念. 什么是代码块:python程序是由代码块构成的. 一个代码块的文本作为python程序执行的单元.代码块: 一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. 一个文件也是一个代码块, eval()和exec()执行的时候也是一个代码块 小数据池. 一种数据缓存机制. 也被称为驻留机制. 小数据池只针对: 整数, 字符串串, 布尔值. 其他的数据类型不存在驻留机制 在python中对-5到256之间的整数会

小数据池 深浅拷贝

代码块,小数据池 在Python中id是内存地址, 只要创建一个数据(对象)那么都会在内存中开辟一个空间,将这个数据临时加到内存中,这个空间是有一个唯一标识的,就好比是身份证号,标识这个空间的叫做内存地址,也就是这个数据(对象)的id,可以利用id()去获取这个数据的内存地址: s = "abc" print(id(s)) #2690615639712 is 和 == ==是比较两边数据是否相等,而is是判断两边内存地址是否相等.如果两边内存地址相等,那么实际是指向同一个内存地址. 内

小学生都能学会的python(小数据池)

1. 小数据池. 目的:缓存我们字符串,整数,布尔值.在使用的时候不需要创建过多的对象 缓存:int, str, bool. int: 缓存范围 -5~256 str: 1. 长度小于等于1,直接缓存 2. 长度大于1. 字符串中如果只有数字, 字母, 下划线. 就会缓存 3. 乘以1. 同上, 乘以大于1的数.仅包含数字,字母下划线.最终长度小于20会缓存 4. 使用sys模块中的intern()缓存字符串 代码块的关系:如果在同一个代码块中.默认的整数和字符串还有布尔值都会进行缓存. 如果涉

python小数据池、代码块

一.代码块 Python程序是由代码块构造的.块是一个python程序的文本,他是作为一个单元执行的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是一个代码块. 什么叫交互方式?就是咱们在cmd中进入Python解释器里面,每一行代码都是一个代码块. 不同的代码块: def func(): print(333) class A: name = 'alex' 虽然上面的缩进的内容都叫代码块,但是他不是python中严格定义的代码块. for i