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


posted @ 2018-01-29 19:22  小黑啊小黑  阅读(684)  评论(0编辑  收藏  举报