 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
 3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文件 发布,C扩展等等),在使用该系统后得以保持,拥有 用作用域内的值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 3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文件 发布,C扩展等等),在使用该系统后得以保持,拥有 用作用域内的值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
 11 数字货币交易系统python实践 代少飞数字货币交易系统 Python实践 代少飞 目录 CONTENTS 常见问题 数据库锁问题 任务调度框架 监控 单击此处添加标题 1 常见问题  队列数据丢失  队列挂掉  负数资产  冲钱一次,转两倍资产 用户资产 用户发现自己资产为负数 负数资产 充一次转双倍 队列数据丢失 队列挂掉 RabbitMQ 撮合或者清算队列数据丢失 订单摆上去,能交易 可动态调整(添加,修改,删除)任务 • 远程调用支持RPyC(一个用作远程过程调用,同时也可以用作分 布式计算的Python模块),少量代码,轻松远程调用 APscheduler+twisted 4 监控  交易系统一行代码写错,可能损失好几百万 监控 • 首先每一笔资金变动都得有变动前后的值和原因 • 挂单精度是否正确 • 一个账户,一个币种,不算手续费,初略盘点 • 利用订单客观数据(挂单价格,数量,手续费),复现交易,与交0 码力 | 21 页 | 1.77 MB | 1 年前3 11 数字货币交易系统python实践 代少飞数字货币交易系统 Python实践 代少飞 目录 CONTENTS 常见问题 数据库锁问题 任务调度框架 监控 单击此处添加标题 1 常见问题  队列数据丢失  队列挂掉  负数资产  冲钱一次,转两倍资产 用户资产 用户发现自己资产为负数 负数资产 充一次转双倍 队列数据丢失 队列挂掉 RabbitMQ 撮合或者清算队列数据丢失 订单摆上去,能交易 可动态调整(添加,修改,删除)任务 • 远程调用支持RPyC(一个用作远程过程调用,同时也可以用作分 布式计算的Python模块),少量代码,轻松远程调用 APscheduler+twisted 4 监控  交易系统一行代码写错,可能损失好几百万 监控 • 首先每一笔资金变动都得有变动前后的值和原因 • 挂单精度是否正确 • 一个账户,一个币种,不算手续费,初略盘点 • 利用订单客观数据(挂单价格,数量,手续费),复现交易,与交0 码力 | 21 页 | 1.77 MB | 1 年前3
 Python3 基础教程 - 廖雪峰........................................................................................... 32 数据类型和变量 ............................................................................................... 以做网站,很多著名的网站包括 YouTube 就是 Python 写的;可以做网 络游戏的后台,很多在线游戏的后台都是 Python 开发的。总之就是能 干很多很多事啦。 Python 当然也有不能干的事情,比如写操作系统,这个只能用 C 语言写; 写手机应用,只能用 Swift/Objective-C(针对 iPhone)和 Java(针对 Android);写 3D 游戏,最好用 C 或 C++。 如果你是小白用户,满足以下条件: 种编程语言的变化图: Python3 基础教程【完整版】 http://www.yeayee.com/ 8/531 总的来说,这几种编程语言各有千秋。C 语言是可以用来编写操作系统 的贴近硬件的语言,所以,C 语言适合开发那些追求运行速度、充分发 挥硬件性能的程序。而 Python 是用来编写应用程序的高级编程语言。 当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要0 码力 | 531 页 | 5.15 MB | 1 年前3 Python3 基础教程 - 廖雪峰........................................................................................... 32 数据类型和变量 ............................................................................................... 以做网站,很多著名的网站包括 YouTube 就是 Python 写的;可以做网 络游戏的后台,很多在线游戏的后台都是 Python 开发的。总之就是能 干很多很多事啦。 Python 当然也有不能干的事情,比如写操作系统,这个只能用 C 语言写; 写手机应用,只能用 Swift/Objective-C(针对 iPhone)和 Java(针对 Android);写 3D 游戏,最好用 C 或 C++。 如果你是小白用户,满足以下条件: 种编程语言的变化图: Python3 基础教程【完整版】 http://www.yeayee.com/ 8/531 总的来说,这几种编程语言各有千秋。C 语言是可以用来编写操作系统 的贴近硬件的语言,所以,C 语言适合开发那些追求运行速度、充分发 挥硬件性能的程序。而 Python 是用来编写应用程序的高级编程语言。 当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要0 码力 | 531 页 | 5.15 MB | 1 年前3
 PyWebIO v1.1.0 使用手册-U pywebio 开发版安装: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO 要求 Python 版本在 3.5.2 及以上 5 PyWebIO, 发布 1.1.0 6 Chapter 2. Install CHAPTER3 Hello, world 一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # 密码输入 password = input("Input 中各次输出的元素具有像数组一样的索引,最前面的编号为 0,以此往后递增加一;同样可以使 用负数对 Scope 中的元素进行索引,-1 表示最后面的元素,-2 表示次后面的元素⋯⋯ position 参数类型为整形,position>=0 时表示输出内容到目标 Scope 的第 position 号元素的前面; position<0 时表示输出内容到目标 Scope 第 position 号元素之后:0 码力 | 98 页 | 1.73 MB | 1 年前3 PyWebIO v1.1.0 使用手册-U pywebio 开发版安装: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO 要求 Python 版本在 3.5.2 及以上 5 PyWebIO, 发布 1.1.0 6 Chapter 2. Install CHAPTER3 Hello, world 一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # 密码输入 password = input("Input 中各次输出的元素具有像数组一样的索引,最前面的编号为 0,以此往后递增加一;同样可以使 用负数对 Scope 中的元素进行索引,-1 表示最后面的元素,-2 表示次后面的元素⋯⋯ position 参数类型为整形,position>=0 时表示输出内容到目标 Scope 的第 position 号元素的前面; position<0 时表示输出内容到目标 Scope 第 position 号元素之后:0 码力 | 98 页 | 1.73 MB | 1 年前3
 PyWebIO v1.1.0 使用手册pywebio 开发版安装: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上 Hello, world 这是一个使用PyWebIO计算 BMI指数 [https://en.wikipedia.org/w 数是阻塞式的(和Python内置的 input 一样),在表单被成功提交之前,输入 函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完 成输入将表单提交后,函数返回用户输入的值。 下面是一些其他类型的输入函数: age = input("How old are you?", type=NUMBER) 输入选项 一个Scope中各次输出的元素具有像数组一样的索引,最前面的编号为0,以此 往后递增加一;同样可以使用负数对Scope中的元素进行索引,-1表示最后面 的元素,-2表示次后面的元素…… position 参数类型为整形, position>=0 时表示输出内容到目标Scope的第 position号元素的前面; position<0 时表示输出内容到目标Scope第position号 元素之后: 输出域控制函数0 码力 | 119 页 | 7.41 MB | 1 年前3 PyWebIO v1.1.0 使用手册pywebio 开发版安装: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上 Hello, world 这是一个使用PyWebIO计算 BMI指数 [https://en.wikipedia.org/w 数是阻塞式的(和Python内置的 input 一样),在表单被成功提交之前,输入 函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完 成输入将表单提交后,函数返回用户输入的值。 下面是一些其他类型的输入函数: age = input("How old are you?", type=NUMBER) 输入选项 一个Scope中各次输出的元素具有像数组一样的索引,最前面的编号为0,以此 往后递增加一;同样可以使用负数对Scope中的元素进行索引,-1表示最后面 的元素,-2表示次后面的元素…… position 参数类型为整形, position>=0 时表示输出内容到目标Scope的第 position号元素的前面; position<0 时表示输出内容到目标Scope第position号 元素之后: 输出域控制函数0 码力 | 119 页 | 7.41 MB | 1 年前3
 PyWebIO v1.0.3 使用手册pip3 install -U --force-reinstall https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上 Hello, world 这是一个使用PyWebIO计算 BMI指数 [https://en.wikipedia.org/w 数是阻塞式的(和Python内置的 input 一样),在表单被成功提交之前,输入 函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完 成输入将表单提交后,函数返回用户输入的值。 下面是一些其他类型的输入函数: age = input("How old are you?", type=NUMBER) 输入选项 一个Scope中各次输出的元素具有像数组一样的索引,最前面的编号为0,以此 往后递增加一;同样可以使用负数对Scope中的元素进行索引,-1表示最后面 的元素,-2表示次后面的元素…… position 参数类型为整形, position>=0 时表示输出内容到目标Scope的第 position号元素的前面; position<0 时表示输出内容到目标Scope第position号 元素之后: 输出域控制函数0 码力 | 106 页 | 7.34 MB | 1 年前3 PyWebIO v1.0.3 使用手册pip3 install -U --force-reinstall https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上 Hello, world 这是一个使用PyWebIO计算 BMI指数 [https://en.wikipedia.org/w 数是阻塞式的(和Python内置的 input 一样),在表单被成功提交之前,输入 函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完 成输入将表单提交后,函数返回用户输入的值。 下面是一些其他类型的输入函数: age = input("How old are you?", type=NUMBER) 输入选项 一个Scope中各次输出的元素具有像数组一样的索引,最前面的编号为0,以此 往后递增加一;同样可以使用负数对Scope中的元素进行索引,-1表示最后面 的元素,-2表示次后面的元素…… position 参数类型为整形, position>=0 时表示输出内容到目标Scope的第 position号元素的前面; position<0 时表示输出内容到目标Scope第position号 元素之后: 输出域控制函数0 码力 | 106 页 | 7.34 MB | 1 年前3
 PyWebIO v1.0.3 使用手册pip3 install -U --force-reinstall https://code.aliyun.com/wang0618/pywebio/repository/ �→archive.zip 系统要求: PyWebIO 要求 Python 版本在 3.5.2 及以上 5 PyWebIO, 发布 1.0.3 6 Chapter 2. Install CHAPTER3 Hello, world 一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # 密码输入 password = input("Input 中各次输出的元素具有像数组一样的索引,最前面的编号为 0,以此往后递增加一;同样可以使 用负数对 Scope 中的元素进行索引,-1 表示最后面的元素,-2 表示次后面的元素⋯⋯ position 参数类型为整形,position>=0 时表示输出内容到目标 Scope 的第 position 号元素的前面; position<0 时表示输出内容到目标 Scope 第 position 号元素之后:0 码力 | 94 页 | 1.71 MB | 1 年前5 PyWebIO v1.0.3 使用手册pip3 install -U --force-reinstall https://code.aliyun.com/wang0618/pywebio/repository/ �→archive.zip 系统要求: PyWebIO 要求 Python 版本在 3.5.2 及以上 5 PyWebIO, 发布 1.0.3 6 Chapter 2. Install CHAPTER3 Hello, world 一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # 密码输入 password = input("Input 中各次输出的元素具有像数组一样的索引,最前面的编号为 0,以此往后递增加一;同样可以使 用负数对 Scope 中的元素进行索引,-1 表示最后面的元素,-2 表示次后面的元素⋯⋯ position 参数类型为整形,position>=0 时表示输出内容到目标 Scope 的第 position 号元素的前面; position<0 时表示输出内容到目标 Scope 第 position 号元素之后:0 码力 | 94 页 | 1.71 MB | 1 年前5
 PyWebIO v0.3.0 使用手册可能滞后,建议使用源码安 装: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上 Hello, world 这是一个使用PyWebIO计算 BMI指数 [https://en.wikipedia.org/w pywebio.input import * 引入。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果如下,浏览器会弹出一个文本输入框来获取输入,在表单 被提交之前,input 函数不会返回。 一些其他类型的输入: # 密码输入 password = input("Input password" word!') 所有输出内容的函数名都以 put_ 开始 PyWebIO提供的全部输出函数请见 pywebio.output 模块 组合输出 put_table() 还支持以 put_xxx 类型的输出函数作为单元格内容: put_table([ ['Type', 'Content'], ['html', 'X2'], ['text', put_text(' PyWebIO v0.3.0 使用手册可能滞后,建议使用源码安 装: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO要求 Python 版本在 3.5.2 及以上 Hello, world 这是一个使用PyWebIO计算 BMI指数 [https://en.wikipedia.org/w pywebio.input import * 引入。 基本输入 首先是一些基本类型的输入 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果如下,浏览器会弹出一个文本输入框来获取输入,在表单 被提交之前,input 函数不会返回。 一些其他类型的输入: # 密码输入 password = input("Input password" word!') 所有输出内容的函数名都以 put_ 开始 PyWebIO提供的全部输出函数请见 pywebio.output 模块 组合输出 put_table() 还支持以 put_xxx 类型的输出函数作为单元格内容: put_table([ ['Type', 'Content'], ['html', 'X2'], ['text', put_text('
 ')]0 码力 | 72 页 | 8.55 MB | 1 年前3
 PyWebIO v1.3.1 使用手册-U pywebio 开发版: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO 要求 Python 版本在 3.5.2 及以上 5 PyWebIO, 发布 1.3.1 6 Chapter 2. Installation CHAPTER3 Hello 一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入。 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # Password input password = 中各次输出的元素具有像数组一样的索引,最前面的编号为 0,以此往后递增加一;同样可以使 用负数对 Scope 中的元素进行索引,-1 表示最后面的元素,-2 表示次后面的元素⋯⋯ position 参数类型为整形,position>=0 时表示输出内容到目标 Scope 的第 position 号元素的前面; position<0 时表示输出内容到目标 Scope 第 position 号元素之后:0 码力 | 111 页 | 1.70 MB | 1 年前3 PyWebIO v1.3.1 使用手册-U pywebio 开发版: pip3 install -U https://code.aliyun.com/wang0618/pywebio/repository/archive.zip 系统要求: PyWebIO 要求 Python 版本在 3.5.2 及以上 5 PyWebIO, 发布 1.3.1 6 Chapter 2. Installation CHAPTER3 Hello 一样),在表单被成功提交之前,输入函数不会返回。 基本输入 首先是一些基本类型的输入。 文本输入: age = input("How old are you?", type=NUMBER) 这样一行代码的效果为:浏览器会弹出一个文本输入框来获取输入,在用户完成输入将表单提交后,函数返 回用户输入的值。 下面是一些其他类型的输入函数: # Password input password = 中各次输出的元素具有像数组一样的索引,最前面的编号为 0,以此往后递增加一;同样可以使 用负数对 Scope 中的元素进行索引,-1 表示最后面的元素,-2 表示次后面的元素⋯⋯ position 参数类型为整形,position>=0 时表示输出内容到目标 Scope 的第 position 号元素的前面; position<0 时表示输出内容到目标 Scope 第 position 号元素之后:0 码力 | 111 页 | 1.70 MB | 1 年前3
共 181 条
- 1
- 2
- 3
- 4
- 5
- 6
- 19














 
 