python封装使用语法规则(python封装的含义)

字符编码:

编码,编成01;解码:把01转换成人能识别的字符;乱码:没意义的字符;

方案:

关键点: 编码和解码一致;
字符集(key-value):key是指01,value是指字符;
python字符编码原理:解释器在内存中把字符都转为unicode;因为其兼容所有的字符集,可以当做其它字符转换的中转站;

具体流程:
第一阶段:python解释器启动,此时就相当于启动了一个文本编辑器

第二阶段:python解释器相当于文本编辑器,去打开test.py文件,从硬盘上将test.py的文件内容读入到内存中;pyhon的解释性,决定了解释器只关心文件内容,不关心文件后缀名;

第三阶段:python解释器解释执行刚刚加载到内存中test.py的代码( ps:在该阶段,即真正执行代码时,才会识别python的语法,执行文件内代码,当执行到name="egon"时,会开辟内存空间存放字符串"egon")


以下两个场景下涉及到字符编码的问题:

1、一个python文件中的内容是由一堆字符组成的,存取均涉及到字符编码问题(python文件并未执行,前两个阶段均属于该范畴)

此时,python解释器会读取test.py的第一行内容,#coding:utf-8,来决定以什么编码格式来读入内存,这一行就是来设定python解释器这个软件的编码使用的编码格式这个编码,可以用sys.getdefaultencoding()查看,如果不在python文件指定头信息#-*-coding:utf-8-*-,那就使用默认的,python2中默认使用ascii,python3中默认使用utf-8;


2、python中的数据类型字符串是由一串字符组成的(python文件执行时,即第三个阶段)

在程序执行之前,内存中确实都是unicode,比如从文件中读取了一行x="egon",其中的x,等号,引号,地位都一样,都是普通字符而已,都是以unicode的格式存放于内存中的;但是程序在执行过程中,会申请内存(与程序代码所存在的内存是俩个空间)用来存放python的数据类型的值,而python的字符串类型又涉及到了字符的概念比如x="egon",会被python解释器识别为字符串,会申请内存空间来存放字符串类型的值,至于该字符串类型的值被识别成何种编码存放,这就与python解释器的有关了,而python2与python3的字符串类型又有所不同。


在python中文件存储的编码格式,需要和解释器的编码格式保持一致,否则无法正常工作;从硬盘到内存的解码工作;
在py3中encode还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string;
python2中的str类型就是python3的bytes类型;
py2:只要是ascii编码范围内的字符对象,和unicode字符串运算时默认从bytes存储 转到 unicode存储;
汉字等不在ascii编码的字符对象存储时被py2转换成bytes存储;
print '苑昊' # 苑昊

print repr('苑昊') #'\xe8\x8b\x91\xe6\x98\x8a'

print (u"hello"+"yuan")

#print (u'苑昊'+'最帅') #UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6

# in position 0: ordinal not in range(128)

py3:文本总是Unicode,由str类型表示,二进制数据则由bytes类型表示。Python 3不会以任意隐式的方式混用str和bytes;
import json

s='苑昊'

print(type(s)) #<class 'str'>

print(json.dumps(s)) # "\u82d1\u660a"


b=s.encode('utf8')

print(type(b)) # <class 'bytes'>

print(b) # b'\xe8\x8b\x91\xe6\x98\x8a'


u=b.decode('utf8')

print(type(u)) #<class 'str'>

print(u) #苑昊

print(json.dumps(u)) #"\u82d1\u660a"

print(len('苑昊')) #

相关文章

掌握这些Python后缀,让你的编程之路更加顺利

想象一下,你正在玩一个大型的多人在线游戏,你的任务是建造一个强大的城堡,保护自己免受敌人的攻击。你需要收集各种资源,比如木材、石头和金属,然后将它们组合在一起,建造出你的城堡。这就像是编程中的代码编写...

Python处理文件的6个常用代码,使用频率很高,值得收藏

日常工作中,我们经常会遇到一些查找、存储文件的问题,比如文件合并、文件分解等,这些问题涉及到对文件进行操作处理。对此,Python的OS库提供了很多功能模块供使用,本文整理了其中6个使用频率很高的常用...

Python语言的12个基础知识点小结(python语言基础总结)

python编程中常用的12种基础知识总结:正则表达式替换,遍历目录方法,列表按列排序、去重、字典排序、字典、列表、字符串互转,时间对象操作,命令行参数解析(getopt),print 格式化输出,进...

文件后缀,也称为文件扩展名,用于标识文件的类型

文件后缀,也称为文件扩展名,用于标识文件的类型,帮助操作系统确定使用何种程序来打开文件。这里列举一些常见的文件后缀名及其所代表的文件类型:? 文本文件:? .txt:纯文本文件? .doc、.docx...

「Python教程」第5篇 Python程序结构

Python程序的基本单元是文件,每个文件就是独立的一个最小的Python程序。用Python IDLE创建文件下面的动图显示了如何使用Python IDLE在Python安装目录下创建一个test....

破解文件处理难题:用 Python 处理 .txt 文件的必学方法

引言:Python中,对.txt后缀的文件进行多种操作。以下是一些常见的操作及其示例代码:先让我们来学习一下文件的打开模式及其作用:读取整个文件:path =r'D:\file.txt'...