六、小数据池、ID、编码

a = 20 

b = 20

print(a==b)  这比较的是数值

print(a is b)  这是比较内存地址  is

print(id(a))  查看变量地址   

小数据池

数字类型:     如果几个变量的值都为数字且都在-5~256 之间   则几个变量的的内存地址是一样的 这样的话就可以节省内存                       空间

字符串:     1、如果存在特殊字符 则不存在小数据池

其他都不存在数据池

编码

python3x 中的编码:
python3x 中 str 在内存中的编码方式是unicode。python3x 中的str不能直接存储,和发送。
bytes 他的编码方式是非unicode(utf-8,gbk,gb2012.....)。

对于英文:
str: 表现形式:s = 'laonanhai'
内部编码:unicode
bytes:
表现形式:s = b'laonanhai'
内部编码:非unicode.
对于中文:
str: 表现形式: s = '中国'
内部编码:unicode
bytes: 00000001
表现形式:s1 = b'\xe4\xb8\xad\xe5\x9b\xbd'
内部编码:非unicode.

encode   变换编码类型 .encode('编码类型')

str---> bytes   s.encode('gbk') s.encode('utf-8')  编码
bytes ---> str s.decode('gbk') s.decode('utf-8') 解码
utf -8转化为unicode
s = '老男孩'
s1 = s.encode('utf-8') unicode 转化为utf-8
s2 = s1.decode('utf-8') utf-8 转化为unicode
print(s1)
print(s2)
gbk转化为unicode
s = '老男孩'
s1 = s.encode('gbk') unicode 转化为gbk
s2 = s1.decode('gbk') gbk 转化为unicode
print(s1)
print(s2)
gbk utf-8之间的互相转换 这个不能直接转换 需要转化为unicode之后再互相转化
s = '老男孩'
s1 = s.encode('gbk') unicode 转化为gbk
s2 = s1.decode('gbk').encode('utf-8) gbk 转化为unicode unicode转化为Utf-8
print(s1)

#b'\xe8\x80\x81\xe7\x94\xb7\xe5\xad\xa9'

print(s2)
#b'\xc0\xcf\xc4\xd0\xba\xa2'


 



 

上一篇:十七、面相对象的进阶


下一篇:十八、模块