鄙人学习笔记



文章目录



IO

定义

在内存中存在数据交换的操作认为是IO操作,比如和终端交互 ,和磁盘(能够长久保存数据数据的存储器)交互,和网络交互等.

程序分类

IO密集型程序:在程序执行中有大量IO操作,而cpu运算较少.消耗cpu较少,耗时长(IO操作耗时长,效率低.磁盘的读写速度,直接会影响到我们程序运行的速度.)

计算密集型程序:程序运行中计算较多,IO操作相对较少。cpu消耗多,执行速度快,几乎没有阻塞。

文件

文件是保存在持久化存储设备(硬盘、U盘、光盘…)上的一段数据。从功能角度,分为文本文件(打开后会自动解码为字符,如.py文件)、二进制文件(如视频、音频等,必须要用专业的工具,才能显示出它需要表达的东西)。在Python里把文件视作一种类型的对象,类似之前学习过的其它类型。

字节串(bytes)

在python3中引入了字节串的概念,与字符串str不同,字节串以字节序列值表达数据,更方便用来处理二进制数据。因此字节串是python3表达二进制编码的一种形式。

①普通的ascii编码字符串可以在前面加b转换为字节串,例如:b’hello’
②字符串转换为字节串方法 :encode()
③字节串转换为字符串方法 : decode()

备注:ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。

举个例子1(字符串与字节串转换方法1)

字符串前加b,使其转换为字节串

(1)字符串为英文
网络编程(part1)--IO及字节串_IO

结果:
网络编程(part1)--IO及字节串_字符串_02

结果中显示的b’hello world’就是字节串,为啥它不显示为01的形式呢?因为这是py的一种表现方法而已,但是他在我们的内存中存储的形式的确是二进制存储。

(2)字符串为汉字
网络编程(part1)--IO及字节串_字符串_03

结果:
网络编程(part1)--IO及字节串_字节串_04

报错!信息显示,只允许ASCII编码序列内的字符串才能表达成字节码存储, ASCII编码序列中没有汉字。

备注 :那我们要是想实现汉字与字节串的相互转换该咋整呢?那就要用到encode()和decode()

举个例子2(字符串与字节串转换方法2)

利用encode()和decode(),实现字符串与字节串之间的相互转换。

(1)encode

网络编程(part1)--IO及字节串_网络编程_05

结果:
网络编程(part1)--IO及字节串_字符串_06

这就是python中将”你好” 转换成字节串的样子,它由两位十六进制为一组来表达的。

(2)decode

网络编程(part1)--IO及字节串_byte_07

结果:
网络编程(part1)--IO及字节串_字节串_08

备注:我们也可以通过bytes()这种强转方法,将数据转换成字节串。

举个例子3(byte方法的使用)

①byte()内的参数若为整数n,则表示,将一个长度为n的,元素全为0的列表序列转换为字节串。比如:
网络编程(part1)--IO及字节串_字符串_09

结果:
网络编程(part1)--IO及字节串_网络编程_10

②byte()内的参数若为字符串,则python会将字符串转换为字节串。但注意,要指定encoding参数为”utf-8”

③byte()内的参数若为整数(0-255内)列表,则表示,将列表整数转换为bytes字节串