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'