5 刘知杭 静态类型的Python静态类型的Python Lyzh(刘知杭) 目录 CONTENTS 有关类型的概念 使用mypy对Python源 代码进行静态分析 代数数据类型 拓展知识 关于类型的一些基本概念 有类型不等于有类型系统 动态语言类型化的必要性 不久前的一个案例 正文 类型的概念 CPython定义了PyObject这个 结构体作为对象头。 CPython中的类型,是指在对 象头中指向类型元信息的指针。 象头中指向类型元信息的指针。 CPython有类型,但CPython没有类型系统。这就是CsPython中诸多问题的由来。 类型系统是什么? 类型系统(type system)的基本目标是防止程序在运行时发生类型错误。当且仅当语言运行时 不存在任何形式的类型错误,那么它就是sound的。soundness是类型系统研究的重要目标。 类型系统(type system)是一种编译期(Compile-time)的类型推导检查规则。 ime)的类型推导检查规则。 类型系统就是一种轻量级的形式化方法,它通常被植入编译器或程序分析器中进行自动校验。 从而让那些不熟悉底层理论的程序员也可以使用它们。 这类轻量级技术中还包括模型检测(Model checking),运行时验证(Runtime verification)和类型系统(Type system)等等。其中类型系统最流行,发展最完善。 在计算机科学中,形式化方法(Formal0 码力 | 42 页 | 6.87 MB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 moshmosh/extension_register.py (只有45行) 科普: Python Import机制是怎样的? perform_extension Source Code 分析当前文件调 用的所有扩展 检查是否使用 moshmosh扩展系 统? 所有扩展的 源码预写 所有扩展的 AST重写 所有扩展的 源码后写 分析 # ± ?????????(???? … ) .pre_rewrite_src(self 用作用域内的值val进行比较的模式 and: 满足多个解构规则的组合模式 or: 满足其中一个解构规则的组合模式 A(a, …): 调用A.__match__进行模式匹配 isinstance(type): 检查类型的pattern (a, *b, c): 匹配tuple [a, *b, c]: 匹配列表 演示 Pattern-Matching 基于template-python扩展实现。 性能比Pampy高数量级倍。0 码力 | 43 页 | 10.71 MB | 1 年前3
Python 标准库参考指南 3.13 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4 内置类型 35 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . 4.4.2 整数类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.4.4 数字类型的哈希运算 . .0 码力 | 2242 页 | 11.73 MB | 9 月前3
Python 标准库参考指南 3.13 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4 内置类型 35 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . 4.4.2 整数类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.4.4 数字类型的哈希运算 . .0 码力 | 2246 页 | 11.74 MB | 9 月前3
Python 标准库参考指南 3.12 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 内置类型 33 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . 4.4.2 整数类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.4 数字类型的哈希运算 . .0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.12 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 内置类型 33 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . 4.4.2 整数类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 4.4.4 数字类型的哈希运算 . .0 码力 | 2253 页 | 11.81 MB | 9 月前3
Python 标准库参考指南 3.11.10 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4 内置类型 33 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . 4.2 整数类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.4.4 数字类型的哈希运算0 码力 | 2399 页 | 11.19 MB | 9 月前3
Python 标准库参考指南 3.11.10 1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 内置类型 31 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4.2 整数类型的附加方法 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.4.4 数字类型的哈希运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 4.5 迭代器类型 . . . . .0 码力 | 2248 页 | 11.10 MB | 9 月前3
Python 标准库参考指南 3.10.15 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 4 内置类型 31 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . 4.2 整数类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.4.4 数字类型的哈希运算0 码力 | 2207 页 | 10.45 MB | 9 月前3
Python 标准库参考指南 3.10.15 1 由 site 模块添加的常量 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 4 内置类型 29 4.1 逻辑值检测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 数字类型 --- int, float, complex . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 4.4.1 整数类型的按位运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.4.2 整数类型的附加方法 4.4.3 浮点类型的附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 4.4.4 数字类型的哈希运算 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 4.5 迭代器类型 . . . . .0 码力 | 2072 页 | 10.39 MB | 9 月前3
共 162 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17













