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
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 40 码力 | 29 页 | 1015.26 KB | 1 年前3
《Java 应用与开发》课程讲义 - 王晓东. . . . . . . . . . . . . . . . . . . . . . . 10 2.1.1 数据类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.1.2 数据类型转换 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 7.5 枚举类型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 iv 7.5.1 枚举类型的概念 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 7.5.2 遍历枚举类型常量值 . . . . . . . . . . . . . . . . . . . . . . . . . . 81 7.5.3 组合使用枚举类型与 switch . . . . . . . . . . . . . . . . . . . . . . 81 7.6 课后习题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820 码力 | 330 页 | 6.54 MB | 1 年前3
PyWebIO v1.0.3 使用手册PyWebIO 0.3 What’s new in PyWebIO 0.2 实现文档 服务器-客户端通信协议 Command Event Indices and tables 索引 模块索引 搜索页面 Discussion and support Need help when use PyWebIO? Make a new discussion on Github Discussions [https://github 数是阻塞式的(和Python内置的 input 一样),在表单被成功提交之前,输入 函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完 成输入将表单提交后,函数返回用户输入的值。 下面是一些其他类型的输入函数: age = input("How old are you?", type=NUMBER) 输入选项 return 'Too old!!' age = input("How old are you?", type=NUMBER, validate=check_age) 当用户输入了不合法的值时,页面上的显示如下: pywebio.input.textarea() 还支持使用 Codemirror [https://codemirror.net/] 实现代码 风格的编辑区,只需使用 code0 码力 | 106 页 | 7.34 MB | 1 年前3
PyWebIO v1.0.3 使用手册一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # 密码输入 password = input("Input return 'Too old!!' age = input("How old are you?", type=NUMBER, validate=check_age) 当用户输入了不合法的值时,页面上的显示如下: pywebio.input.textarea() 还支持使用 Codemirror 实现代码风格的编辑区,只需使用 code 参数传入 Codemirror 支持的选项即可 (最简单的情况是直接传入 结束后,事件回调也将不起作用,你可 4.1. User’s guide 15 PyWebIO, 发布 1.0.3 以在任务函数末尾处使用pywebio.session.hold() 函数来将会话保持,这样在用户关闭浏览器页面前, 事件回调将一直可用。 输出域 Scope PyWebIO 使用 Scope 模型来对内容输出的位置进行灵活地控制,PyWebIO 的内容输出区可以划分出不同的输 出域,PyWebIO 将输出域称作0 码力 | 94 页 | 1.71 MB | 1 年前5
PyWebIO v0.3.0 使用手册Nginx WebSocket配置示例 Release notes 实现文档 服务器-客户端通信协议 Command Event Indices and tables 索引 模块索引 搜索页面 Discussion and support Need help when use PyWebIO? Send me Email wang0.618&qq.com (replace & with pywebio.input import * 引入。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果如下,浏览器会弹出一个文本输入框来获取输入,在表单 被提交之前,input 函数不会返回。 一些其他类型的输入: # 密码输入 password = input("Input password" return 'Too old!!' age = input("How old are you?", type=NUMBER, valid_func=check_age) 当用户输入了不合法的值时,页面上的显示如下: pywebio.input.textarea() 还支持使用 Codemirror [https://codemirror.net/] 实现代码 风格的编辑区,只需使用 code0 码力 | 72 页 | 8.55 MB | 1 年前3
PyWebIO v1.1.0 使用手册一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # 密码输入 password = input("Input return 'Too old!!' age = input("How old are you?", type=NUMBER, validate=check_age) 当用户输入了不合法的值时,页面上的显示如下: pywebio.input.textarea() 还支持使用 Codemirror 实现代码风格的编辑区,只需使用 code 参数传入 Codemirror 支持的选项即可 (最简单的情况是直接传入 结束后,事件回调也将不起作用,你可 4.1. User’s guide 15 PyWebIO, 发布 1.1.0 以在任务函数末尾处使用pywebio.session.hold() 函数来将会话保持,这样在用户关闭浏览器页面前, 事件回调将一直可用。 输出域 Scope PyWebIO 使用 Scope 模型来对内容输出的位置进行灵活地控制,PyWebIO 的内容输出区可以划分出不同的输 出域,PyWebIO 将输出域称作0 码力 | 98 页 | 1.73 MB | 1 年前3
Laravel 5.6 中文文档6 Illuminate\Log\Writer 类被重命名为 Illuminate\Log\Logger,如果你在应用的某个类中对这个类进行了显式的类型提示作为依赖注入,需要 更新该类的引用为新的类名。或者,作为替代方案,你可以考虑将类型提示调整为标准的 Psr\Log\LoggerInterface 接口。 Illuminate\Contracts\Logging\Log 接口 该接口已经被移除,因为它和 添加完站点后,在 Homestead 目录下运行 vagrant reload --provision 命令重启虚拟机。 站点类型 Homestead 支持多种框架,所以即使你没有使用 Laravel 的话,也可以使用 Homestead,例如,我们可以通过 symfony2 站点类型轻松添加一个 Symfony 应用: sites: - map: symfony2.test to: /home/vagrant/Code/Symfony/web type: symfony2 目前支持的站点类型包括 apache、laravel(默认)、proxy、silverstripe、statamic、symfony2 和 symfony4。 站点参数 你也可以通过站点指令 params 添加额外的 Nginx fastcgi_param 值。例如我们可以添加一个0 码力 | 377 页 | 14.56 MB | 1 年前3
共 450 条
- 1
- 2
- 3
- 4
- 5
- 6
- 45













