 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
 NoService 库0 码力 | 1 页 | 76.00 B | 6 月前3 NoService 库0 码力 | 1 页 | 76.00 B | 6 月前3
 基于静态分析的Rust内存安全缺陷检测研究基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 报告日期:2022.11.25 复旦大学 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 Rust语言 ❑ 系统级安全编程语言 ▪ 内存安全 ▪ 并发安全 ▪ 效率 2006年 2011年 研究挑战:指针分析是NP-hard问题 ▪ 准确性:应采用路径敏感的指针分析算法,避免过多误报 ▪ 分析效率:应基于Rust MIR的特点对算法进行优化,使其可行 ❑ 整体思路:基于编译过程中的生成的MIR进行静态分析 ▪ 路径提取:控制流图=>生成树 ▪ 别名分析:分析指针之间的关联关系 ▪ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取 别名分析 模式识别 “SafeDrop: Detecting0 码力 | 28 页 | 1.55 MB | 1 年前3 基于静态分析的Rust内存安全缺陷检测研究基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 报告日期:2022.11.25 复旦大学 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 Rust语言 ❑ 系统级安全编程语言 ▪ 内存安全 ▪ 并发安全 ▪ 效率 2006年 2011年 研究挑战:指针分析是NP-hard问题 ▪ 准确性:应采用路径敏感的指针分析算法,避免过多误报 ▪ 分析效率:应基于Rust MIR的特点对算法进行优化,使其可行 ❑ 整体思路:基于编译过程中的生成的MIR进行静态分析 ▪ 路径提取:控制流图=>生成树 ▪ 别名分析:分析指针之间的关联关系 ▪ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取 别名分析 模式识别 “SafeDrop: Detecting0 码力 | 28 页 | 1.55 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
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100














 
  
  
 