python基础(六)—编码,内存地址
知识点补充
id 查询内存地址
a = 'abc' print(id(a))
li = [1,2,3]
print(id(li))
is 判断内存地址
a = 'abc!' b = 'abc!' print(a == b) print(a is b) #pychrm这里面给优化了所以显示True 应该是False
int str 小数据池
int :小数据池范围 -5 ~ 256
str:如果全部由字母组成的字符串 都指向一个内存地址
如果是数字与str(单个字母)相乘,则20以内(包含20)的是同一个内存地址.
其他数据类型 没有小数据池概念
编码进阶
unicode :万国码
A : 0000 0001 0000 0001 0000 0001 0000 0001 32位
中: 0000 0101 0000 0001 0000 0001 0000 0001 32位
升级:utf-8 :用最少8位表示一个字符
A : 0000 0001 8位
欧洲 : 0000 0001 0000 0001 16位
亚洲 中 : 0000 0101 0000 0001 0000 0001 24位
gbk :国标
a : 0000 0001 8位
中 : 0000 0101 0000 0001 16位
1,不同编码之间是不能互相识别对方的二进制,会报错,或者产生乱码.
2,在你的字符串(文件),存储,传输时,必须使用非unicode的二进制(01010101).
py3:
字符串:编码方式(在内存中的运行方式):默认都是unicode.
int
byte
对于非中文: 表现形式: b'alex'
内部编码: utf-8 gbk,gb2312...(非unicode) 你设定的.
对于中文: 表现形式: b'xe3\xf2\x36\xe3\xf2\x36\'
内部编码: utf-8 gbk,gb2312...(非unicode) 你设定的.
str
对于非中文: 表现形式: 'alex'
内部编码: unicode
对于中文: 表现形式: '中国'
内部编码: unicode