5 刘知杭 静态类型的Python静态类型的Python Lyzh(刘知杭) 目录 CONTENTS 有关类型的概念 使用mypy对Python源 代码进行静态分析 代数数据类型 拓展知识 关于类型的一些基本概念 有类型不等于有类型系统 动态语言类型化的必要性 不久前的一个案例 正文 类型的概念 CPython定义了PyObject这个 结构体作为对象头。 CPython中的类型,是指在对 象头中指向类型元信息的指针。 ness是类型系统研究的重要目标。 类型系统(type system)是一种编译期(Compile-time)的类型推导检查规则。 类型系统就是一种轻量级的形式化方法,它通常被植入编译器或程序分析器中进行自动校验。 从而让那些不熟悉底层理论的程序员也可以使用它们。 这类轻量级技术中还包括模型检测(Model checking),运行时验证(Runtime verification)和类型系统(Type 中通过函数的类型签名来寻找函数。 错误检查、程序验证 程序效率:动态类型不利于编译优化 渐进式类型系统 相对于静态语言的类型系统。 为动态语言添加类型系统需要考虑到过渡与历史包袱 一种叫做渐进式类型系统的东西完美的符合了这个应用场景 这种类型系统同时允许动态类型与静态类型的存在 声明类型系统、鸭子类型与结构类型系统 类型系统的分类——声明式类型系统与结构化类型系统 声明类型系统通过名字来检查类型0 码力 | 42 页 | 6.87 MB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 95 -> 0.96 Restrain JIT 2.74 -> 0.64 3.54 -> 0.59 3.14 -> 0.93 2.00 -> 0.03 2.60 -> 0.96 如果还有时间,我们用静态类型 来写一个简单的网页生成框架 一个用起来,没有学习曲线的框架。 很安全,因为没有程序员需要付出心 智负担的工作。 THANK YOU thautwarm: - github.com/thautwarm0 码力 | 43 页 | 10.71 MB | 1 年前3
Python 标准库参考指南 3.13 handlers -- 服务器/网关基类 . . . . . . . . . . . . . . . . . . . . . . . . . 1286 21.2.6 wsgiref.types -- 用于静态类型检查的 WSGI 类型 . . . . . . . . . . . . . . . . . . 1289 21.2.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1708 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1714 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . 解释器栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1855 29.14.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1857 29.14.7 生成器、协程和异步生成器的当前状态0 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.13 handlers -- 服务器/网关基类 . . . . . . . . . . . . . . . . . . . . . . . . . 1282 21.2.6 wsgiref.types -- 用于静态类型检查的 WSGI 类型 . . . . . . . . . . . . . . . . . . 1285 21.2.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1704 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1710 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . 解释器栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1851 29.14.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1853 29.14.7 生成器、协程和异步生成器的当前状态0 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.12 handlers -- 服务器/网关基类 . . . . . . . . . . . . . . . . . . . . . . . . . 1250 21.2.6 wsgiref.types -- 用于静态类型检查的 WSGI 类型 . . . . . . . . . . . . . . . . . . 1253 21.2.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1680 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . 解释器栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1825 29.14.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1827 29.14.7 生成器、协程和异步生成器的当前状态0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.12 handlers -- 服务器/网关基类 . . . . . . . . . . . . . . . . . . . . . . . . . 1250 21.2.6 wsgiref.types -- 用于静态类型检查的 WSGI 类型 . . . . . . . . . . . . . . . . . . 1253 21.2.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1680 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1685 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . 解释器栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1825 29.14.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1827 29.14.7 生成器、协程和异步生成器的当前状态0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.11.10 handlers -- 服务器/网关基类 . . . . . . . . . . . . . . . . . . . . . . . 1231 21.2.6 wsgiref.types -- 用于静态类型检查的 WSGI 类型 . . . . . . . . . . . . . . . . . 1234 21.2.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . 解释器栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 29.13.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1805 29.13.7 Current0 码力 | 2248 页 | 11.10 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . . 1546 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1549 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . 解释器栈 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1675 29.13.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1676 29.13.7 生成器和协程的当前状态 也可以在实例上进行 (例如 C().f())。其所属类以外 的类实例会被忽略。如果类方法在其所属类的派生类上调用,则该派生类对象会被作为隐含的第一 个参数被传入。 类方法与 C++ 或 Java 中的静态方法不同。如果你需要后者,请参阅本节中的staticmethod()。 有关类方法的更多信息,请参阅 types。 在 3.9 版更改: 类方法现在可以包装其他描述器 例如property()。0 码力 | 2072 页 | 10.39 MB | 9 月前3
Python 标准库参考指南 3.11.10 handlers -- 服务器/网关基类 . . . . . . . . . . . . . . . . . . . . . . . . . 1317 21.2.6 wsgiref.types -- 用于静态类型检查的 WSGI 类型 . . . . . . . . . . . . . . . . . . . 1320 21.2.7 例子 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1928 29.13.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1930 29.13.7 Current0 码力 | 2399 页 | 11.19 MB | 9 月前3
Python 标准库参考指南 3.10.15 . . . . . . . . . . . . . 1651 27.5 Python 性能分析器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1655 27.5.1 性能分析器简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1789 29.13.6 静态地获取属性 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1790 29.13.7 生成器和协程的当前状态 也可以在实例上进行 (例如 C().f())。其所属类以外的 类实例会被忽略。如果类方法在其所属类的派生类上调用,则该派生类对象会被作为隐含的第一个参 数被传入。 类方法与 C++ 或 Java 中的静态方法不同。如果你需要后者,请参阅本节中的staticmethod()。有关 类方法的更多信息,请参阅 types。 8 Chapter 2. 内置函数 The Python Library Reference0 码力 | 2207 页 | 10.45 MB | 9 月前3
共 126 条
- 1
- 2
- 3
- 4
- 5
- 6
- 13













