可变数据类型:列表,字典,集合
不可变数据类型(一创建,不能修改):整型,元组,字符串
字符编码:
ASCII编码。最多只能用8位来表示一个字节。ASCII编码最多只能表示255个符合。
GB2312和GBK和GB18030。支持中文。
Unicode万国码。搞全有。utf-32 = 4字节 utf-16 = 2字节 utf-8 = 8bits 可变长编码,英文一个字节,中文三个字节
二进制位=bit(位)(最小表示单元)
8bit = 1byte(字节)(最小存储单元)
bytes 字节类型 (二进制类型)就是一个8bits的字节
所有的字符要存到内存里,硬盘里,都是bytes格式。
在py2中,看到的字符串都是bytes。str == bytes数据
Unicode == Unicode编码后二进制数据
在py3中, str == Unicode
bytes == bytes数据
在字符编码的转换过程是:先解码,decode,再编码,encode。
所有的字符存在内存中,硬盘里,都是bytes类型。
在Python2中,看到的字符串,都是bytes。
字节数据和Unicode数据的区别:
print(repr())打印编码
字节数据:x 开头
Unicode数据:u 开头
name = "George" name2 = b'Hello' #字节数据 print(type(name.encode('GBK'))) #编码 print(type(name2.decode('utf-8'))) #解码
在Python2里,字节类型的数据可以和Unicode类型的数据,进行字符串拼接。
在Python3里,两种不同的字节类型,不能进行拼接操作。
Python3 不同字节类型的数据进行拼接的报错信息:
TypeError: must be str, not bytes
注意点:
1、Unicode,utf-8,GBK 都是编码规则。
2、为什么内存存储Unicode。
3、程序执行前后的两个状态。
进制转换:
值 8 4 2 1
二进制位 0 0 0 0
二进制:0 1
八进制( Oct ):0 1 2 3 4 5 6 7
十进制():0 1 2 3 4 5 6 7 8 9
十六进制( 0x(前缀)或BH(后缀) ):0 1 2 3 4 5 6 7 8 9 A B C D E F
10 11 12 13 14 15