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

liftword5个月前 (12-30)技术文章114

字符编码:

编码,编成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('苑昊')) #

相关文章

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

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

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

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

将文件后缀改为小写,Python实现(python文件小写转大写)

Python实现文件名大小写批量修改随着文件数量的不断增加,批量处理文件成了我们日常工作中的一个重要需求。本文介绍基于Python语言,基于一个大文件夹,遍历其中的多个子文件夹,对于每一个子文件夹中的...

Python基础-Python模块与包介绍(python模块总结)

当你在一个Python项目中编写的代码越来越多的时候,为了保证代码的可读性,我们引入了模块和包的概念,其中模块中包含了Python代码的单个文件,而包则是包括了Python中的多个模块,通过模块和包可...

不会你来骂我!腾讯T5大佬教你Python中删除文件的方法

打开UC浏览器 查看更多精彩图片很多时候开发者需要删除文件。可能是他错误地创建了文件,或者不再需要该文件。无论出于何种原因,都有一些方法可以通过Python来删除文件,而无需手动查找文件并通过UI交互...

Python图像处理库Pillow介绍(python自带的图像处理库)

PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。由于PIL仅支持到Python 2.7,加上年久失修,...