Prthon编码和解码/is 和 ==

一. is 和 == 的区别

小数据池

数字小数据池的范围 -5 ~ 256
字符串中如果有特殊字符他们的内存地址就不一样
字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致
 1 a = 'disman'
 2 a1 = 'disman'
 3 print(a is a1)    # Fales
 4 
 5 n = 5//2
 6 n1 = 2
 7 print(n is n1)    #True
 8 
 9 a = 'a'*21
10 b = 'a'*21
11 print(a is b)
12 
13 a = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
14 b = 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa'
15 print(a is b)
16 
17 n = -6
18 n1 = -6
19 print(n is n1)  #False
20 
21 n = -5
22 n1 = -5
23 print(n is n1)    #True
24 
25 n = 257
26 n1 = 257
27 print(n is n1)     #True
        总结:

== 比较 比较的俩边的值

is 比较 比较的是内存地址 id()
二. 编码和解码

ascii 码:

不支持 中文

支持 英文 数字 符号

8位 一个字节

gbk码 国标:

支持 中文,英文,数字,符号

英文 16位 二个字节

中文 16位 二个字节


unicode 万国码

支持 中文,英文,数字,符号

英文 32 位 四个字节

中文 32位 四个字节


utf-8 长度可变的万国码 最少用8位

英文 8位 一个字节
中文 24位 三个字节


Python3中 程序运行阶段 使用的是unicode 显示所有的内容

bytes类型

传输和存储都是使用bytes

pycharm 存储的时候默认是使用utf-8

总结:

is 和 == 区别

is 比较内存地址

id() ---- 获取内存地址

小数据池:

数字的小数据池范围是 -5 ~ 256

字符串:

字符串中不能包含特殊符号 + - * / @ 等等
字符串单个字符*20以内内存地址都是一样的,单个字符*21以上内存地址不一致

注意: pycharm是个坑, 一个py文件中所有相同的字符串 一般都是使用一样的内存地址

== 比较俩边的值

编码和解码

encode(编码方式) ---- 拿到明文编码后对应的字节

decode(编码方式) -----将编码后的字节解码成对应的明文



注意: 用什么进行编码就要什么进行解码 不然后会懵逼!
python2的版本. 默认使用ASCII
python3的版本. 默认使用unicode. 在计算的时候会非常方便

在网络传输和数据存储的时候. 换gbk, utf-8(90%)
编码(encode): unicode变成你需要的编码
编码之后的内容是字节(bytes类型)
解码(decode): 把目标bytes转换成字符串

posted @ 2019-05-14 20:56  沙谷地  阅读(452)  评论(0编辑  收藏  举报