1. 什么是类型注解并说明其背后的目的.
函数注解
Python 3.6引入
对函数的参数进行类型注解
对函数的返回值进行类型注解
只对函数参数做一个辅助的说明,并不对函数参数进行类型检查
提供给第三方工具,做代码分析,发现隐藏bug
函数注解的信息,保存在__annotations__属性中
自动补全并可以进行静态代码检查,可以极大程度上帮助你减少程序中的bug。
具体的语法是可以归纳为两点:在声明变量时,变量的后面可以加一个冒号,后面再写上变量的类型,如 int、list 等等。
在声明方法返回值的时候,可以在方法的后面加一个箭头,后面加上返回值的类型,如 int、list 等等。
在 PEP 8 中,具体的格式是这样规定的:在声明变量类型时,变量后方紧跟一个冒号,冒号后面跟一个空格,再跟上变量的类型。
在声明方法返回值的时候,箭头左边是方法定义,箭头右边是返回值的类型,箭头左右两边都要留有空格。
有了这样的声明,以后我们如果看到这个方法的定义,我们就知道传入的参数类型了,如调用 add 方法的时候,我们就知道传入的需要是一个数值类型的变量,而不是字符串类型,非常直观。
但值得注意的是,这种类型和变量注解实际上只是一种类型提示,对运行实际上是没有影响。
2. 内置的open函数打开文件有几种模式,它们的区别是什么?
3. 列出本周讲的几种序列化方法,它们各自的特点是什么?
pickle:Python程序之间可以都用pickle解决序列化、反序列化,如果是跨平台、跨语言、跨协议pickle就不太适合了,就需要公共的协议
json:一般json编码的数据很少落地,数据都是通过网络传输。传输的时候,要考虑压缩它。本质上来说它就是个文本,就是个字符串。json很简单,几乎编程语言都支持Json,所以应用范围十分广泛
MessagePack : 基于 二进制 高效的对象序列化类库,可用于跨语言通信。 它可以像 JSON 那样,在许多种语言之间交换结构对象。 但是它比 JSON 更快速也更轻巧。 支持 Python 、 Ruby 、 Java 、 C/C++ 等众多语言。MessagePack 简单易用, 高效压缩, 支持语言丰富, 所以, 用它序列化也是很好的选择.
运行结果"