day06 小数据池,再谈编码

时间:2021-02-10 12:50:42

今日所学

一.  小数据池

二.  is 和==的区别

三.  编码的问题

一.小数据池的作用 用来缓存数据

  可以作用的数据类型: 整数(int),

            字符串(str),

            布尔值(bool).

什么是块?

代码块: ⼀个模块, ⼀个函数, ⼀个类, 甚⾄每⼀个command命令都是⼀个代码块. ⼀个⽂件也是⼀ 个代码块, eval()和exec()执⾏的时候也是⼀个代码块

二 . is 和== 的区别

id()

通过id 可以查找到一个变量表示的值在内存中的地址.

例如:

.    s = 'alex'

s1=id(s)

  print (s1)    # 4326667072

is 和 == 的区别

is 判断的是两个值得内存地址

" = = ""判断的是2个值内部的元素是否相等

现在我们大致可以这样认为: 如果两个值得内存地址相同,他们一定是相等的

如果只是值相等,那么他们不一定是同一个对象.

小数据池 : 一种数据缓存机制 ,也被称为驻留机制 .几乎每个编程语言都哟偶类似的东西

小数据池只针对 整数 字符串 布尔值 .其他的数据类型不存在驻留机制.

小数据池的优点: 能够提高一些字符串,整数的运算速度 ,省略创建对象的过程.

        缺点:在数据池中插入新的内容会花费很多的时间.

对于数字 : -5 - 256是会被加到小数据池中的,每一次使用的都是同日对象

对于字符串:1. 如果字符串的⻓度是0或者1, 都会默认进⾏缓存

2. 字符串⻓度⼤于1, 但是字符串中只包含字⺟, 数字, 下划线时才会缓存

3. ⽤乘法的到的字符串.

     ①. 乘数为1, 仅包含数字, 字⺟, 下划线时会被缓存. 如果 包含其他字符, ⽽⻓度<=1 也会被驻存,

     ②. 乘数⼤于1 . 仅包含数字, 字⺟, 下划 线这个时候会被缓存. 但字符串⻓度不能⼤于20 4. 指定驻留. 我们可以通过sys模块中的intern()函数来指定要驻留的内容.

三 ,编码的补充

python 3.x中内存中使用的代码是Unicode码

编码回顾:

ascii:最早出现的编码.里面有英文大写字母 小写字母 数字 特殊符号

没有中文  8bit  1byte

GBK: 中文国标码 里面包含立中文常用的编码16bit 2byte

Unicode: 万国码 里面包含了所有的国家文字编码 32bit 4byte 包含了ASCII码

utf-8:可变长度的万国码,是unicode的一种实现,最小字符占8位

1.英文 8bit 1byte

2.欧洲文字 16bit 2byte

3. 中文 32bit 3byte

重点:  编码和解码   在国内 只有UTF-8和GBK两种形式

编码:s.encode( )将一种文字变成计算机所识别的语言

解码:s.decode() 将计算机所识别的语言变成你识别的语言

s = "我是⽂字"

bs=s.encode("utf-8")

bss=bs.decode("utf-8")

print(bss)  这就是相当于实现了程序的编码和解码