 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 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
 MoonBit月兔编程语言 现代编程思想 第四课 多元组, 结构体,枚举类型现代编程思想 多元组,结构体与枚举类型 Hongbo Zhang 1 基础数据类型:多元组与结构体 2 回顾:多元组 多元组:固定⻓度的不同类型数据的集合 定义: (<表达式>, <表达式>, ...) 类型: (<表达式类型>, <表达式类型>, ...) 例如: 身份信息: ("Bob", 2023, 10, 24): (String, Int, Int, Int) 成员访问: (2023, 10, 24).0 == 2023 列表:任意⻓度的相同类型数据的集合 例如: 字符的序列: Cons('H', Cons('i', Cons('!', Nil))) Cons : construct 的缩写 3 笛卡尔积 ⼀个多元组类型的元素即是每个组成类型的元素构成的有序元素组 集合的笛卡尔积,⼜称积类型 例:扑克牌的所有花⾊:{ } 4 结构体 元组的问题在于,难以理解其所代表的数据 address: String; postal: Int } 通过名称,我们能明确数据的信息以及对应字段的含义 5 结构体的定义 结构体的定义形如 struct <结构体名称> { <字段名>: <类型> ; ... } struct PersonalInfo { name: String; age: Int} 定义结构体的值时,形如 { <字段名>: <值> , ... } let info:0 码力 | 26 页 | 435.86 KB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第四课 多元组, 结构体,枚举类型现代编程思想 多元组,结构体与枚举类型 Hongbo Zhang 1 基础数据类型:多元组与结构体 2 回顾:多元组 多元组:固定⻓度的不同类型数据的集合 定义: (<表达式>, <表达式>, ...) 类型: (<表达式类型>, <表达式类型>, ...) 例如: 身份信息: ("Bob", 2023, 10, 24): (String, Int, Int, Int) 成员访问: (2023, 10, 24).0 == 2023 列表:任意⻓度的相同类型数据的集合 例如: 字符的序列: Cons('H', Cons('i', Cons('!', Nil))) Cons : construct 的缩写 3 笛卡尔积 ⼀个多元组类型的元素即是每个组成类型的元素构成的有序元素组 集合的笛卡尔积,⼜称积类型 例:扑克牌的所有花⾊:{ } 4 结构体 元组的问题在于,难以理解其所代表的数据 address: String; postal: Int } 通过名称,我们能明确数据的信息以及对应字段的含义 5 结构体的定义 结构体的定义形如 struct <结构体名称> { <字段名>: <类型> ; ... } struct PersonalInfo { name: String; age: Int} 定义结构体的值时,形如 { <字段名>: <值> , ... } let info:0 码力 | 26 页 | 435.86 KB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 10 从稀疏数据结构到量化数据类型从稀疏数据结构到量化数据类型 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 >> 3 。 >> 2 = 位运算 >> 对负数的处理 signed 类型的 >> n 会把最高位复制 n 次。 因为补码的特性,这导致负数 >> 的结果仍是负 数。 这样就实现了和 Python 一样的始终向下取整除 法。 >> 2 = unsigned 类型的位运算 >> 不一样 而 unsigned 类型的 >> n 会不会复制最高位, 只是单纯的位移,这会导致负数的符号位单独被位 只是单纯的位移,这会导致负数的符号位单独被位 移,补码失效,造成结果不对。 unsigned 类型的 >> 会生成 shr 指令, signed 类型的 >> 会生成 sar 指令。 我们需要负方向无限延伸的稀疏数据结果,那就只 要 signed 那个就行。 >> 2 = 没有重合时可以用高效的加法:位运算 | • 如果可以保证 a 和 b 满足 a & b = 0 , 如: • 1011000 和 00001100 码力 | 102 页 | 9.50 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 10 从稀疏数据结构到量化数据类型从稀疏数据结构到量化数据类型 by 彭于斌( @archibate ) 往期录播: https://www.bilibili.com/video/BV1fa411r7zp 课程 PPT 和代码: https://github.com/parallel101/course 本课涵盖:稀疏矩阵、 unordered_map 、空间稀 疏网格、位运算、浮点的二进制格式、内存带宽优 化 面向人群:图形学、 >> 3 。 >> 2 = 位运算 >> 对负数的处理 signed 类型的 >> n 会把最高位复制 n 次。 因为补码的特性,这导致负数 >> 的结果仍是负 数。 这样就实现了和 Python 一样的始终向下取整除 法。 >> 2 = unsigned 类型的位运算 >> 不一样 而 unsigned 类型的 >> n 会不会复制最高位, 只是单纯的位移,这会导致负数的符号位单独被位 只是单纯的位移,这会导致负数的符号位单独被位 移,补码失效,造成结果不对。 unsigned 类型的 >> 会生成 shr 指令, signed 类型的 >> 会生成 sar 指令。 我们需要负方向无限延伸的稀疏数据结果,那就只 要 signed 那个就行。 >> 2 = 没有重合时可以用高效的加法:位运算 | • 如果可以保证 a 和 b 满足 a & b = 0 , 如: • 1011000 和 00001100 码力 | 102 页 | 9.50 MB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树B-Tree:适合顺序访问,利于硬盘存储数据 R-Tree:存储空间⼏何结构 …… 8 数据结构:⼆叉树 ⼆叉树要么是⼀棵空树,要么是⼀个节点;它最多具有两个⼦树:左⼦树与右⼦树 叶节点的两个⼦树都是空树 基于递归枚举类型的定义(本节课默认存储数据为整数) 1. enum IntTree { 2. Node(Int, IntTree, IntTree) // 存储的数据,左⼦树,右⼦树 3. Empty 4 dfs_search(target, left) || dfs_search(target, right) 在找到后即会中⽌遍历 13 ⼴度优先遍历 对每⼀层⼦树,挨个访问,并按照顺序,接着访问它们的⼦树 算法的实现依赖先进先出的数据结构:队列 我们对队列中现有的树,取出⼀个,对它的根节点进⾏操作,再将它的所有⾮ 空⼦树从左到右加⼊队列最后,直到队列为空 14 数据结构:队列 就像⽣活中排队⼀样,先进⼊队伍的⼈最先获得服务0 码力 | 29 页 | 1015.26 KB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第五课 数据类型:树、二叉树、二叉搜索树、AVL树B-Tree:适合顺序访问,利于硬盘存储数据 R-Tree:存储空间⼏何结构 …… 8 数据结构:⼆叉树 ⼆叉树要么是⼀棵空树,要么是⼀个节点;它最多具有两个⼦树:左⼦树与右⼦树 叶节点的两个⼦树都是空树 基于递归枚举类型的定义(本节课默认存储数据为整数) 1. enum IntTree { 2. Node(Int, IntTree, IntTree) // 存储的数据,左⼦树,右⼦树 3. Empty 4 dfs_search(target, left) || dfs_search(target, right) 在找到后即会中⽌遍历 13 ⼴度优先遍历 对每⼀层⼦树,挨个访问,并按照顺序,接着访问它们的⼦树 算法的实现依赖先进先出的数据结构:队列 我们对队列中现有的树,取出⼀个,对它的根节点进⾏操作,再将它的所有⾮ 空⼦树从左到右加⼊队列最后,直到队列为空 14 数据结构:队列 就像⽣活中排队⼀样,先进⼊队伍的⼈最先获得服务0 码力 | 29 页 | 1015.26 KB | 1 年前3
 统一建模语言 UML 参考手册 - 基本概念���������������������������������������������������������������������������������������������� ��� 依赖��������������������������������������������������������������������������������������������������� �������������������� ��� 包的依赖������������������������������������������������������������������������������������������������������������������������������������ ��� 访问和引入依赖��������������������������� 动态行为定义了对象时间上的历史和为达成目标对象间 的通讯 从不同但是相关的视角来对系统建模 允许了多种角度对系统的理解 � ��� 还包括用包来分解模型的组织性结构 它允许软件团队将系统分解为可工作的单 元 对包之间的依赖进行理解和在复杂的开发环境中管理模型单元的版本 它包含了表达 实现上的决策和用构件来组织运行时元素的结构 � ��� 不是编程语言 工具可以提供 ��� 至各种编程语言的代码生成 以及可以从现有 的程序逆向构筑模型0 码力 | 123 页 | 2.61 MB | 1 年前3 统一建模语言 UML 参考手册 - 基本概念���������������������������������������������������������������������������������������������� ��� 依赖��������������������������������������������������������������������������������������������������� �������������������� ��� 包的依赖������������������������������������������������������������������������������������������������������������������������������������ ��� 访问和引入依赖��������������������������� 动态行为定义了对象时间上的历史和为达成目标对象间 的通讯 从不同但是相关的视角来对系统建模 允许了多种角度对系统的理解 � ��� 还包括用包来分解模型的组织性结构 它允许软件团队将系统分解为可工作的单 元 对包之间的依赖进行理解和在复杂的开发环境中管理模型单元的版本 它包含了表达 实现上的决策和用构件来组织运行时元素的结构 � ��� 不是编程语言 工具可以提供 ��� 至各种编程语言的代码生成 以及可以从现有 的程序逆向构筑模型0 码力 | 123 页 | 2.61 MB | 1 年前3
 Comprehensive Rust(简体中文) 202412. 23 4.3 Playground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5 类型和值 25 5.1 Hello, World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 26 5.4 算术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.5 类型推导 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.6 练习:Fibonacci . 46 9.5.1 解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10 用户定义的类型 48 10.1 结构体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 10.20 码力 | 359 页 | 1.33 MB | 10 月前3 Comprehensive Rust(简体中文) 202412. 23 4.3 Playground . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 5 类型和值 25 5.1 Hello, World . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 5.2 26 5.4 算术 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.5 类型推导 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 5.6 练习:Fibonacci . 46 9.5.1 解答 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 10 用户定义的类型 48 10.1 结构体 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 10.20 码力 | 359 页 | 1.33 MB | 10 月前3
 2022年美团技术年货 合辑器的多特征因子(模型 pCTR 预估值、隐层表征)进行融合: 算法 < 41 图 3 多层级多因子模型融合 具体地,如上图 3 所示。第一层级的目的是构建出有差异性的单个模型,主要通过不 同类型的模型在用户最近行为、全部行为数据以及不同特征集合上分别进行训练,来 产生差异性。第二层级则通过不同单个模型的组合进一步产生差异性,差异性的提升 来源于两个方面,分别是模型组合方式的不同(用不同模型,根据单模型特征进行打 建模方式可以很自然地解决这一问 题,并且取得了不错的效果。下图 7 是本次比赛中,我们采用的 Seq2Seq 模型结 构。针对时序性挑战,历史天气特征通过时间前后组织成序列输入到编码器当中,解 码器依赖于编码结果以及未来天气预报特征进行解码,得到 48 小时的污染物浓度序 列。未来天气预报信息对齐到解码器每个小时的解码过程中,解码器可以通过天气预 报中的天气信息(比如风级、气压等)来有效预估出突变值。针对空间性挑战,方案 多类别层次化图模型优化: (1)候选图模型的生成:现实世界中的图通常是多种属性的组合,这些属性信息很难 只用一种方法捕捉完全,因此,我们使用了基于谱域、空域、Attention 机制等多种 不同类型的模型来捕捉多种属性关系。不同模型在不同数据集上效果差异较大,为了 防止后续模型融合时加入效果较差的模型,会对 GCN、GAT、APPNP、TAGC、 DNA、GraphSAGE、GraphMix、Grand、GCNII0 码力 | 1356 页 | 45.90 MB | 1 年前3 2022年美团技术年货 合辑器的多特征因子(模型 pCTR 预估值、隐层表征)进行融合: 算法 < 41 图 3 多层级多因子模型融合 具体地,如上图 3 所示。第一层级的目的是构建出有差异性的单个模型,主要通过不 同类型的模型在用户最近行为、全部行为数据以及不同特征集合上分别进行训练,来 产生差异性。第二层级则通过不同单个模型的组合进一步产生差异性,差异性的提升 来源于两个方面,分别是模型组合方式的不同(用不同模型,根据单模型特征进行打 建模方式可以很自然地解决这一问 题,并且取得了不错的效果。下图 7 是本次比赛中,我们采用的 Seq2Seq 模型结 构。针对时序性挑战,历史天气特征通过时间前后组织成序列输入到编码器当中,解 码器依赖于编码结果以及未来天气预报特征进行解码,得到 48 小时的污染物浓度序 列。未来天气预报信息对齐到解码器每个小时的解码过程中,解码器可以通过天气预 报中的天气信息(比如风级、气压等)来有效预估出突变值。针对空间性挑战,方案 多类别层次化图模型优化: (1)候选图模型的生成:现实世界中的图通常是多种属性的组合,这些属性信息很难 只用一种方法捕捉完全,因此,我们使用了基于谱域、空域、Attention 机制等多种 不同类型的模型来捕捉多种属性关系。不同模型在不同数据集上效果差异较大,为了 防止后续模型融合时加入效果较差的模型,会对 GCN、GAT、APPNP、TAGC、 DNA、GraphSAGE、GraphMix、Grand、GCNII0 码力 | 1356 页 | 45.90 MB | 1 年前3
 Rust 语言学习笔记Rust 类型系统.............................................................................. 21 2.4.1 可变性 .............................................................................. 21 2.4.2 原生类型.... 1 泛型参数约束...................................................................... 48 4.3.2 trait 与内置类型 ................................................................... 49 4.3.3 trait 默认实现......... 5.2.1 package 配置 ...................................................................... 57 5.2.2 依赖的详细配置: ................................................................ 58 5.2.3 自定义编译器配置 .......0 码力 | 117 页 | 2.24 MB | 1 年前3 Rust 语言学习笔记Rust 类型系统.............................................................................. 21 2.4.1 可变性 .............................................................................. 21 2.4.2 原生类型.... 1 泛型参数约束...................................................................... 48 4.3.2 trait 与内置类型 ................................................................... 49 4.3.3 trait 默认实现......... 5.2.1 package 配置 ...................................................................... 57 5.2.2 依赖的详细配置: ................................................................ 58 5.2.3 自定义编译器配置 .......0 码力 | 117 页 | 2.24 MB | 1 年前3
 Kotlin 官方文档中文版  v1.91 版本发布与路线图 Kotlin 版本发布 Kotlin 路线图 基础 基本语法 习惯用法 例学 Kotlin↗ 编码规范 概念 类型 基本类型 概述 数字 布尔 字符 字符串 数组 无符号整型 类型检测与类型转换 控制流程 条件与循环 返回与跳转 异常 包与导入 类与对象 类 继承 属性 接口 函数式(SAM)接口 可见性修饰符 扩展 属性委托 类型别名 函数 函数 lambda 表达式 内联函数 操作符重载 类型安全的构建器 空安全 相等性 this 表达式 异步程序设计技术 协程 注解 解构声明 反射 多平台开发 Kotlin 多平台用于 iOS 与 Android Kotlin 多平台移动端入门 1. 搭建环境 2. 创建第一个跨平台应用 3. 更新 UI 4. 添加依赖 5. 共享更多逻辑 创建多平台库 创建并发布多平台库——教程 发布多平台库 共享代码原则 平台间共享代码 接入平台相关 API 分层项目结构 Android 源代码集布局 添加依赖项 添加依赖项 添加 Android 依赖项 添加 iOS 依赖项 运行测试 构件编译项 配置编译项 构建最终原生二进制文件 多平台 Gradle DSL 参考 范例 FAQ 向团队介绍跨平台移动端开发 Kotlin0 码力 | 2049 页 | 45.06 MB | 1 年前3 Kotlin 官方文档中文版  v1.91 版本发布与路线图 Kotlin 版本发布 Kotlin 路线图 基础 基本语法 习惯用法 例学 Kotlin↗ 编码规范 概念 类型 基本类型 概述 数字 布尔 字符 字符串 数组 无符号整型 类型检测与类型转换 控制流程 条件与循环 返回与跳转 异常 包与导入 类与对象 类 继承 属性 接口 函数式(SAM)接口 可见性修饰符 扩展 属性委托 类型别名 函数 函数 lambda 表达式 内联函数 操作符重载 类型安全的构建器 空安全 相等性 this 表达式 异步程序设计技术 协程 注解 解构声明 反射 多平台开发 Kotlin 多平台用于 iOS 与 Android Kotlin 多平台移动端入门 1. 搭建环境 2. 创建第一个跨平台应用 3. 更新 UI 4. 添加依赖 5. 共享更多逻辑 创建多平台库 创建并发布多平台库——教程 发布多平台库 共享代码原则 平台间共享代码 接入平台相关 API 分层项目结构 Android 源代码集布局 添加依赖项 添加依赖项 添加 Android 依赖项 添加 iOS 依赖项 运行测试 构件编译项 配置编译项 构建最终原生二进制文件 多平台 Gradle DSL 参考 范例 FAQ 向团队介绍跨平台移动端开发 Kotlin0 码力 | 2049 页 | 45.06 MB | 1 年前3
 Kotlin 1.9.10 官方文档 中文版
版本发布与路线图 Kotlin 版本发布 Kotlin 路线图 基础 基本语法 习惯用法 例学 Kotlin↗ 编码规范 概念 类型 基本类型 概述 数字 布尔 字符 字符串 数组 无符号整型 类型检测与类型转换 1.8.2 1.8.2.1 1.8.2.2 1.8.2.3 1.8.3 1.8.4 1.8.4.1 1.8.4.2 1.8.4.3 属性 接口 函数式(SAM)接口 可见性修饰符 扩展 数据类 密封类与密封接口 泛型:in、out、where 嵌套类 枚举类 内联类 对象表达式与对象声明 委托 属性委托 类型别名 函数 函数 lambda 表达式 内联函数 1.8.5.4 1.8.6 1.8.7 1.8.8 1.8.9 1.8.10 1.8.11 1.8.12 1.8.13 1 1.9.2.3 1.9.3 操作符重载 类型安全的构建器 空安全 相等性 this 表达式 异步程序设计技术 协程 注解 解构声明 反射 多平台开发 Kotlin 多平台用于 iOS 与 Android Kotlin 多平台移动端入门 1. 搭建环境 2. 创建第一个跨平台应用 3. 更新 UI 4. 添加依赖 5. 共享更多逻辑 6. 项目圆满结束 了解移动端项目结构0 码力 | 3753 页 | 29.69 MB | 1 年前3 Kotlin 1.9.10 官方文档 中文版
版本发布与路线图 Kotlin 版本发布 Kotlin 路线图 基础 基本语法 习惯用法 例学 Kotlin↗ 编码规范 概念 类型 基本类型 概述 数字 布尔 字符 字符串 数组 无符号整型 类型检测与类型转换 1.8.2 1.8.2.1 1.8.2.2 1.8.2.3 1.8.3 1.8.4 1.8.4.1 1.8.4.2 1.8.4.3 属性 接口 函数式(SAM)接口 可见性修饰符 扩展 数据类 密封类与密封接口 泛型:in、out、where 嵌套类 枚举类 内联类 对象表达式与对象声明 委托 属性委托 类型别名 函数 函数 lambda 表达式 内联函数 1.8.5.4 1.8.6 1.8.7 1.8.8 1.8.9 1.8.10 1.8.11 1.8.12 1.8.13 1 1.9.2.3 1.9.3 操作符重载 类型安全的构建器 空安全 相等性 this 表达式 异步程序设计技术 协程 注解 解构声明 反射 多平台开发 Kotlin 多平台用于 iOS 与 Android Kotlin 多平台移动端入门 1. 搭建环境 2. 创建第一个跨平台应用 3. 更新 UI 4. 添加依赖 5. 共享更多逻辑 6. 项目圆满结束 了解移动端项目结构0 码力 | 3753 页 | 29.69 MB | 1 年前3
共 519 条
- 1
- 2
- 3
- 4
- 5
- 6
- 52














 
 