 5 刘知杭 静态类型的Python静态类型的Python Lyzh(刘知杭) 目录 CONTENTS 有关类型的概念 使用mypy对Python源 代码进行静态分析 代数数据类型 拓展知识 关于类型的一些基本概念 有类型不等于有类型系统 动态语言类型化的必要性 不久前的一个案例 正文 类型的概念 CPython定义了PyObject这个 结构体作为对象头。 CPython中的类型,是指在对 象头中指向类型元信息的指针。 中通过函数的类型签名来寻找函数。 错误检查、程序验证 程序效率:动态类型不利于编译优化 渐进式类型系统 相对于静态语言的类型系统。 为动态语言添加类型系统需要考虑到过渡与历史包袱 一种叫做渐进式类型系统的东西完美的符合了这个应用场景 这种类型系统同时允许动态类型与静态类型的存在 声明类型系统、鸭子类型与结构类型系统 类型系统的分类——声明式类型系统与结构化类型系统 声明类型系统通过名字来检查类型 PEP 3107 – Function Annotations 由于Python2中缺少缺少注释函数参数和返回值的标准,因此出现了各种工具和库来填 补这一空白。一些工具会解析函数的文档字符串,在这里寻找函数的注释。 这个PEP旨在钦定一种标准的方式,来减少各种库和工具采用的不同方法引起的混乱。 PEP 484 – Type Hints PEP 3107增加了对函数定义各部分上的任意注释的支持。尽管没有为注释指定任何0 码力 | 42 页 | 6.87 MB | 1 年前3 5 刘知杭 静态类型的Python静态类型的Python Lyzh(刘知杭) 目录 CONTENTS 有关类型的概念 使用mypy对Python源 代码进行静态分析 代数数据类型 拓展知识 关于类型的一些基本概念 有类型不等于有类型系统 动态语言类型化的必要性 不久前的一个案例 正文 类型的概念 CPython定义了PyObject这个 结构体作为对象头。 CPython中的类型,是指在对 象头中指向类型元信息的指针。 中通过函数的类型签名来寻找函数。 错误检查、程序验证 程序效率:动态类型不利于编译优化 渐进式类型系统 相对于静态语言的类型系统。 为动态语言添加类型系统需要考虑到过渡与历史包袱 一种叫做渐进式类型系统的东西完美的符合了这个应用场景 这种类型系统同时允许动态类型与静态类型的存在 声明类型系统、鸭子类型与结构类型系统 类型系统的分类——声明式类型系统与结构化类型系统 声明类型系统通过名字来检查类型 PEP 3107 – Function Annotations 由于Python2中缺少缺少注释函数参数和返回值的标准,因此出现了各种工具和库来填 补这一空白。一些工具会解析函数的文档字符串,在这里寻找函数的注释。 这个PEP旨在钦定一种标准的方式,来减少各种库和工具采用的不同方法引起的混乱。 PEP 484 – Type Hints PEP 3107增加了对函数定义各部分上的任意注释的支持。尽管没有为注释指定任何0 码力 | 42 页 | 6.87 MB | 1 年前3
 Python 标准库参考指南 3.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 6.6 stringprep --- 因特网字符串预处理 Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 12.5.1 dbm.sqlite3 . . . . . . . . . . . . 492 12.5.2 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 12.5.3 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2246 页 | 11.74 MB | 9 月前3 Python 标准库参考指南 3.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 6.6 stringprep --- 因特网字符串预处理 Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 489 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490 12.5.1 dbm.sqlite3 . . . . . . . . . . . . 492 12.5.2 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 492 12.5.3 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2246 页 | 11.74 MB | 9 月前3
 Python 标准库参考指南 3.11.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . . 463 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 12.5.1 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 12.5.3 dbm.dumb --- 便携式 DBM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 12.6 sqlite3 --- SQLite 数据库 DB-API0 码力 | 2248 页 | 11.10 MB | 9 月前3 Python 标准库参考指南 3.11.10. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . . 463 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 465 12.5.1 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467 12.5.3 dbm.dumb --- 便携式 DBM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468 12.6 sqlite3 --- SQLite 数据库 DB-API0 码力 | 2248 页 | 11.10 MB | 9 月前3
 Python 标准库参考指南 3.8.20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . . 407 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 17 并发执行 703 17.1 threading ---0 码力 | 1927 页 | 9.69 MB | 9 月前3 Python 标准库参考指南 3.8.20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . . 407 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 17 并发执行 703 17.1 threading ---0 码力 | 1927 页 | 9.69 MB | 9 月前3
 Python 标准库参考指南 3.10.15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.6 stringprep --- 因特网字符串预备 . Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 12.5.1 dbm.gnu --- 便携式 DBM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . 444 12.6.1 教程 . . . . . . . . . . .0 码力 | 2072 页 | 10.39 MB | 9 月前3 Python 标准库参考指南 3.10.15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 6.6 stringprep --- 因特网字符串预备 . Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440 12.5.1 dbm.gnu --- 便携式 DBM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . 444 12.6.1 教程 . . . . . . . . . . .0 码力 | 2072 页 | 10.39 MB | 9 月前3
 Python 标准库参考指南 3.12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.6 stringprep --- 因特网字符串预处理 . . . . . . . . . 471 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 12.5.1 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 12.5.3 dbm.dumb --- 便携式 DBM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 12.6 sqlite3 --- SQLite 数据库的 DB-API0 码力 | 2253 页 | 11.81 MB | 9 月前3 Python 标准库参考指南 3.12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.6 stringprep --- 因特网字符串预处理 . . . . . . . . . 471 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472 12.5.1 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475 12.5.3 dbm.dumb --- 便携式 DBM 实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476 12.6 sqlite3 --- SQLite 数据库的 DB-API0 码力 | 2253 页 | 11.81 MB | 9 月前3
 Python 标准库参考指南 3.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 6.6 stringprep --- 因特网字符串预处理 Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 12.5.1 dbm.sqlite3 . . . . . . . . . . . . 488 12.5.2 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 12.5.3 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2242 页 | 11.73 MB | 9 月前3 Python 标准库参考指南 3.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 6.6 stringprep --- 因特网字符串预处理 Python 对象序列化 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486 12.5.1 dbm.sqlite3 . . . . . . . . . . . . 488 12.5.2 dbm.gnu --- GNU 数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488 12.5.3 dbm.ndbm --- 新数据库管理器 . . . . . . . . . . . . . . . . . . . . . . . . .0 码力 | 2242 页 | 11.73 MB | 9 月前3
 Python 标准库参考指南 3.7.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . 384 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 17 并发执行 669 17.1 threading ---0 码力 | 1846 页 | 9.09 MB | 9 月前3 Python 标准库参考指南 3.7.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . 384 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 639 17 并发执行 669 17.1 threading ---0 码力 | 1846 页 | 9.09 MB | 9 月前3
 Python 标准库参考指南 3.8.20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . . 407 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 17 并发执行 703 17.1 threading ---0 码力 | 1927 页 | 9.69 MB | 9 月前3 Python 标准库参考指南 3.8.20. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 6.6 stringprep --- 因特网字符串预备 . . . . . . . . . . 407 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 667 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 673 17 并发执行 703 17.1 threading ---0 码力 | 1927 页 | 9.69 MB | 9 月前3
 Python 标准库参考指南 3.7.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.6 stringprep --- 因特网字符串预备 . . . . . . . . 405 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 17 并发执行 709 17.1 threading0 码力 | 1961 页 | 9.14 MB | 9 月前3 Python 标准库参考指南 3.7.13. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 6.5 unicodedata --- Unicode 数据库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 6.6 stringprep --- 因特网字符串预备 . . . . . . . . 405 12.5 dbm --- Unix ” 数据库” 接口 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 12.6 sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 672 16.16 ctypes --- Python 的外部函数库 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 678 17 并发执行 709 17.1 threading0 码力 | 1961 页 | 9.14 MB | 9 月前3
共 169 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17














 
 