1. 什么是类型注解并说明其背后的目的
为了解决动态类型对类型的约束不强,在小规模开发的危害不大,但是随着
Python
的广泛使用,这种缺点确实对 大项目的开发危害非常大
3.6
版本引入 ,对变量类型的说明,非强制约束 ,第三方工具可以进行类型分析和推断
2. 内置的open函数打开文件有几种模式,它们的区别是什么?
r
模式 :只读打开文件,如果使用write
方法,会抛异常 如果文件不存在,抛出FileNotFoundError
异常
w
模式 :表示只写方式打开,如果读取则抛出异常。如果文件不存在,则直接创建文件 如果文件存在,则清空文件内容
x
模式 :文件不存在,创建文件,并只写方式打开。文件存在,抛出FileExistsError
异常
a
模式 :文件存在,只写打开,追加内容 。文件不存在,则创建后,只写打开,追加内容
文本模式
t :字符流,将文件的字节按照某种字符编码理解,按照字符操作。open
的默认
mode
就是
rt
。
二进制模式
b :字节流,将文件就按照字节理解,与字符编码无关。二进制模式操作时,字节操作使用bytes
类型
+
模式 :为r
、
w
、
a
、
x
提供缺失的读或写功能,但是,获取文件对象依旧按照
r
、
w
、
a
、
x
自己的特征。
+
模式不能单独使用,可以认为它是为前面的模式字符做增强功能的。
3. 列出本周讲的几种序列化方法,它们各自的特点是什么?
pickle:Python程序之间可以都用pickle解决序列化、反序列化,如果是跨平台、跨语言、跨协议pickle就不太适合了,就需要公共的协议
json:一般json编码的数据很少落地,数据都是通过网络传输。传输的时候,要考虑压缩它。本质上来说它就是个文本,就是个字符串。json很简单,几乎编程语言都支持Json,所以应用范围十分广泛
MessagePack
:
基于
二进制
高效的对象序列化类库,可用于跨语言通信。
它可以像
JSON
那样,在许多种语言之间交换结构对象。
但是它比
JSON
更快速也更轻巧。
支持
Python
、
Ruby
、
Java
、
C/C++
等众多语言。
4. 有字符串”not 404 found 张三 99 深圳”,使用正则过滤掉英文和数字,最终得到”张三 深圳”