1.小数据池 2.is 和 == 的区别 3.编码补充(编码和解码格式)

1. 小数据池:
	目的:缓存我们字符串,整数,布尔值,在使用的时候不需要创建过多的对象。
	小数据池只针对:整数(int)、字符串(str)、布尔值(bool),其它数据类型不存在驻留机制。
	优点:能够提高一些字符串、整数的处理速度,省略创建对象的过程。
	缺点:在“池”中创建或者插入新的内容会花费更多的时间。
		对于int(整数): -5~256是会被加到小数据池中的. 每次使用都是同一个对象.
	对于字符串:
		1. 如果字符串的长度是0或者1, 都会默认进行缓存
		2. 字符串长度大于1, 但是字符串中只包含字母, 数字, 下划线时才会缓存
		3. 用乘法的到的字符串. ①. 乘数为1, 仅包含数字, 字⺟, 下划线时会被缓存. 如果
		包含其他字符, 度<=1 也会被驻存, ②. 乘数大于1 . 仅包含数字, 字母, 下划
		线这个时候会被缓存. 但字符串长度不能小于20
		4. 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容.
		
	代码块的关系:如果在同一个代码块中。默认的整数和字符串还有布尔值都会进行缓存.
				如果涉及计算。尊崇上面的规则如果跨代码块,按照上面的规则执行的。
		
		
2. is 和 == 的区别:
		== 判断走哦有两段的值是否相等,是不是一致。
		is 判断左右两端的内容的内存地址是否一致,如果返回Ture,那可以确定这两个变量使用的是同一个对象。
		  ( 可以这样认为, 内存地址相同,值一定相等;但值相等,内存地址不一定相同)
		
		
3.编码的补充;
		1.python2中默认使用的编码是ASCLL码,所以不支持中文,如果需要在python2中更改编码,
		  需要在文件的开始编写:
				# -*- encoding:utf-8 -*-
			python3中:内存中是用的是unicode码。
	编码回顾:
		1. ASCII : 最早的编码. 里面有英文大写字母, 小写字母, 数字, 一些特殊字符. 没有中文,
			8个01代码, 8个bit, 1个byte
		2. GBK: 中文国标码, 里面包含了ASCII编码和中文常用编码. 16个bit, 2个byte
		3. UNICODE: 万国码, 里面包含了全世界所有国家文字的编码. 32个bit, 4个byte, 包含了
			ASCII
		4. UTF-8: 可变长度的万国码. 是unicode的一种实现. 最小字符占8位
			1.英文: 8bit 1byte
			2.欧洲文字:16bit 2byte
			3.中文:24bit 3byte

		综上, 除了ASCII码以外, 其他信息不能直接转换.
		
		在python3的内存中. 在程序运行阶段. 使用的是unicode编码. 因为unicode是万国码. 什么内
		容都可以进行显示. 那么在数据传输和存储的时候由于unicode比较浪费空间和资源. 需要把
		unicode转存成UTF-8或者GBK进行存储. 怎么转换呢. 在python中可以把文字信息进行编码.
		编码之后的内容就可以进行传输了. 编码之后的数据是bytes类型的数据。
		
		编码和解码的编码格式:
		



          decode(解码) 和 encode(编码):
			python3内存中使用的是unicode。
			unicode => utf-8  encode("utf-8")
			utf-8 => unicode  decode("utf-8")
			utf-8和gbk不能直接转换
			bytes是字符串的另一种表示形式
		
posted @ 2018-09-10 19:47  過去  阅读(224)  评论(0编辑  收藏  举报