标签:round bit 简单 国家 display 是你 稳定性 字母 pychar
例如(nodepad++,pycharm,word等),打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的内容也都是存放在内存中的,断电后数据就丢失了。因而需要保存在硬盘上,点击保存按钮或快捷键,就把内存中的数据保存到了硬盘上。在这一点上,我们编写的py文件(没有执行时),跟编写的其他文件没有什么区别,都只是编写一堆字符而已。
例如python 、test.py:
第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器;
第二阶段:python解释器相当于文本编辑器,去打开test.py,从硬盘上将test.py的文件内容读入到内存中;
第三阶段:python解释器执行刚刚加载到内存中的test.py的代码(在该阶段,即执行时,才会识别python的语法,执行到字符串时,会开辟内存空间存放字符串);
python解释器与文本编辑器相同点:python解释器是解释执行文件内容的,因而python解释器具备读py文件的功能,这一点与文本编辑器一样;
python解释器与文本编辑器不同点:文本编辑器将文件内容读入内存后,是为了显示/编辑,而python解释器将文件内容读入内存后,是为了执行(识别python的语法);
计算机想要工作必须通电,高低电平(高电平即二进制数1,低电平即二进制数0),计算机只认识数字,让计算机读懂人类的字符就必须经过:字符---------(翻译过程)-------------数字,实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。
1.一个python文件中的内容是由一堆字符组成的(python文件未执行时)
2.python中的数据类型字符串是由一串字符组成的(python文件执行时)
1: 所有程序,最终都要加载到内存,程序保存到硬盘不同的国家用不同的编码格式,但是到内存中我们为了兼容万国(计算机可以运行任何国家的程序原因在于此),统一且固定使用unicode, 2: 这就是为何内存固定用unicode的原因,你可能会说兼容万国我可以用utf-8啊,可以,完全可以正常工作,之所以不用肯定是unicode比utf-8更高效啊(uicode固定用2个字节编码 3:utf-8则需要计算),但是unicode更浪费空间,没错,这就是用空间换时间的一种做法,而存放到硬盘,或者网络传输,都需要把unicode转成utf-8, 4: 因为数据的传输,追求的是稳定,高效,数据量越小数据传输就越靠谱,于是都转成utf-8格式的,而不是unicode。
ascii:数字,字母 特殊字符。
字节:8位表示一个字节。
字符:是你看到的内容的最小组成单位。
abc : a 一个字符。
中国:中 一个字符。
a : 0000 1011
unicode: 万国码
起初:
a : 0000 1011 0000 1011
中: 0000 1011 0000 1111
升级:
a : 0000 1011 0000 1011 0000 1011 0000 1011
中: 0000 1011 0000 1111 0000 1011 0000 1011
utf-8:最少用8位表示一个字符。
a: 0000 1011
欧洲: 0000 1011 0000 1011
亚洲中:0000 1011 0000 1011 0000 1011
gbk:国标
a: 0000 1011
中文:0000 1011 0000 1011 两个字节。
python3x
int
bool
bytes:内部编码方式:(非unicode,utf-8,gbk.gb2312...)
str : 内部编码方式unicode
list
dict
tuple
bytes:内部编码方式:(非unicode,utf-8,gbk.gb2312...)
str : 内部编码方式unicode
str:
bytes:
str:
bytes:
unicode和utf-8之间的转换:
s1 = ‘alex‘ #将alex从unicode编码转换为utf-8 b1 = s1.encode(‘utf-8‘) print(b1) #输出结果: b‘alex‘
s1 = ‘alex‘ b1 = b‘alex‘ print(s1.capitalize()) print(b1.capitalize()) #输出结果: Alex b‘Alex‘
s2 = ‘中国‘ b2 = s2.encode(‘utf-8‘) print(b2) #输出结果: b‘\xe4\xb8\xad\xe5\x9b\xbd‘
unicode----->utf-8------>unicode
s1 = ‘alex‘ # str ---> bytes encode 编码 b1 = s1.encode(‘utf-8‘) print(b1) #bytes---> str decode 解码 s2 = b1.decode(‘utf-8‘) print(s2) #输出结果: b‘alex‘ alex
Unicode、gbk、utf-8之间的转换:
s1 = ‘alex‘ b2 = s1.encode(‘gbk‘) s3 = b2.decode(‘gbk‘) print(b2) print(s3) #输出结果: b‘alex‘ alex
s1 = ‘alex‘ b1 = s1.encode(‘utf-8‘) s2 = b1.decode(‘gbk‘) print(s2) #输出结果: alex
utf-8、gbk之间的转换
s4 = ‘中国‘ b4 = s4.encode(‘utf-8‘) # utf-8 bytes print(b4) b6 = b4.decode(‘utf-8‘).encode(‘gbk‘) print(b6) #输出结果: b‘\xe4\xb8\xad\xe5\x9b\xbd‘ #bytes类型的utf-8一个中文3个字节 b‘\xd6\xd0\xb9\xfa‘ #bytes类型的gbk一个中文2个字节
标签:round bit 简单 国家 display 是你 稳定性 字母 pychar
原文地址:https://www.cnblogs.com/bingo1024/p/9064138.html