李欣宜 扩展Python的语法和语义
Python的语法扩展系统 Moshmosh Thautwarm&李欣宜 The awareness of low-level implementation details brings the appreciation of an abstraction and the intuitive explanation for it. — Oleg Kiselyov 表达式和语句区分,表达式内部不能包含语句 4. 没有语法宏,代码操作不够自动 5. 没有variant类型(只能靠一大堆抽象类和继承去workaround) 6. 对数据类型的方法不能扩展, 或者进行扩展是初级的,没有基于 类型的多态 那么告辞? 搭嘎!阔托瓦鲁! 摆 脱 编 程 语 言 给 你 的 限 制 Python有一堆好东西: 1. Python有良好的启动速度(看向Julia) 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文 件发布,C扩展等等),在使用该系统后得以保持,拥0 码力 | 39 页 | 3.69 MB | 1 年前34 Python语法扩展框架Moshmosh和其上的CPython compatible JIT实现 thautwarm
0 码力 | 30 页 | 8.04 MB | 1 年前34_杨柳_基于Python构建高稳定可扩展的自动化测试集群
0 码力 | 62 页 | 25.29 MB | 1 年前33 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二进制文件 任何在不使用该系统时拥有的功能(PYC二进制文件 发布,C扩展等等),在使用该系统后得以保持,拥有 工业级的可靠性和稳定性 6 如何工作? Python Import 忽略Cache Loader, 只对源代码Loader 重写get_data方法 调用父get_data方法, 拿到源代码 moshmosh.extension. perform_extension 源码变换 扩展的语法和语义 并非naïve的,不卫生的0 码力 | 43 页 | 10.71 MB | 1 年前3Python 3.7.13 正则表达式 HOWTO
数据 库中标记为字母的所有字符。通过在编译正则表达式时提供 re.ASCII 标志,可以在字符串模式中使用 更为受限制的 \w 定义。 以下特殊序列列表不完整。有关 Unicode 字符串模式的序列和扩展类定义的完整列表,请参阅标准库参 考中的最后一部分 正则表达式语法。通常,Unicode 版本匹配 Unicode 数据库中相应类别中的任何字符。 \d 匹配任何十进制数字;这等价于类 [0-9]。 。正则被处理为字符串,因为正则表达式不是核心 Python 语言 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,re 模块只是 Python 附带的 C 扩展模块,就类似于 socket 或 zlib 模 块。 将正则放在字符串中可以使 Python 语言更简单,但有一个缺点是下一节的主题。 3.2 反斜杠灾难 如前所述,正则表达式使用反斜杠字符 匹配任何字符,包括换行符。 IGNORECASE, I 进行大小写不敏感匹配。 LOCALE, L 进行区域设置感知匹配。 MULTILINE, M 多行匹配,影响 ^ 和 $。 VERBOSE, X(为’ 扩展’) 启用详细的正则,可以更清晰,更容易理解。 I IGNORECASE 执行不区分大小写的匹配;字符类和字面字符串将通过忽略大小写来匹配字母。例如,[A-Z] 也 匹配小写字母。除非使用 ASCII0 码力 | 17 页 | 392.75 KB | 10 月前3Python 3.8.20 正则表达式 HOWTO
中标记为字母的所有字符。通过在编译正则表达式时提供 re.ASCII 标志,可以在 str 表达式中使用较 为狭窄的 \w 定义。 以下为特殊序列的不完全列表。有关 Unicode 字符串正则表达式的序列和扩展类定义的完整列表,参见 标准库参考中 正则表达式语法的最后一部分。通常,Unicode 版本的字符类会匹配 Unicode 数据库的相应 类别中的任何字符。 \d 匹配任何十进制数字,等价于字符类 。正则被处理为字符串,因为正则表达式不是核心 Python 语言 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,re 模块只是 Python 附带的 C 扩展模块,就类似于 socket 或 zlib 模 块。 将正则放在字符串中可以使 Python 语言更简单,但有一个缺点是下一节的主题。 3.2 反斜杠灾难 如前所述,正则表达式使用反斜杠字符 匹配任何字符,包括换行符。 IGNORECASE, I 进行大小写不敏感匹配。 LOCALE, L 进行区域设置感知匹配。 MULTILINE, M 多行匹配,影响 ^ 和 $。 VERBOSE, X(为’ 扩展’) 启用详细的正则,可以更清晰,更容易理解。 I IGNORECASE 执行不区分大小写的匹配;字符类和字面字符串将通过忽略大小写来匹配字母。例如,[A-Z] 也 匹配小写字母。除非使用 ASCII0 码力 | 17 页 | 393.47 KB | 10 月前3Python 3.8.20 正则表达式 HOWTO
中标记为字母的所有字符。通过在编译正则表达式时提供 re.ASCII 标志,可以在 str 表达式中使用较 为狭窄的 \w 定义。 以下为特殊序列的不完全列表。有关 Unicode 字符串正则表达式的序列和扩展类定义的完整列表,参见 标准库参考中 正则表达式语法的最后一部分。通常,Unicode 版本的字符类会匹配 Unicode 数据库的相应 类别中的任何字符。 \d 匹配任何十进制数字,等价于字符类 。正则被处理为字符串,因为正则表达式不是核心 Python 语言 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,re 模块只是 Python 附带的 C 扩展模块,就类似于 socket 或 zlib 模 块。 将正则放在字符串中可以使 Python 语言更简单,但有一个缺点是下一节的主题。 3.2 反斜杠灾难 如前所述,正则表达式使用反斜杠字符 匹配任何字符,包括换行符。 IGNORECASE, I 进行大小写不敏感匹配。 LOCALE, L 进行区域设置感知匹配。 MULTILINE, M 多行匹配,影响 ^ 和 $。 VERBOSE, X(为’ 扩展’) 启用详细的正则,可以更清晰,更容易理解。 I IGNORECASE 执行不区分大小写的匹配;字符类和字面字符串将通过忽略大小写来匹配字母。例如,[A-Z] 也 匹配小写字母。除非使用 ASCII0 码力 | 17 页 | 393.47 KB | 10 月前3Python 3.10.15 正则表达式 HOWTO
中标记为字母的所有字符。通过在编译正则表达式时提供 re.ASCII 标志,可以在 str 表达式中使用较 为狭窄的 \w 定义。 以下为特殊序列的不完全列表。有关 Unicode 字符串正则表达式的序列和扩展类定义的完整列表,参见 标准库参考中 正则表达式语法的最后一部分。通常,Unicode 版本的字符类会匹配 Unicode 数据库的相应 类别中的任何字符。 \d 匹配任何十进制数字,等价于字符类 。正则被处理为字符串,因为正则表达式不是核心 Python 语言 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,re 模块只是 Python 附带的 C 扩展模块,就类似于 socket 或 zlib 模 块。 将正则放在字符串中可以使 Python 语言更简单,但有一个缺点是下一节的主题。 3.2 反斜杠灾难 如前所述,正则表达式使用反斜杠字符 匹配任何字符,包括换行符。 IGNORECASE, I 进行大小写不敏感匹配。 LOCALE, L 进行区域设置感知匹配。 MULTILINE, M 多行匹配,影响 ^ 和 $。 VERBOSE, X(为’ 扩展’) 启用详细的正则,可以更清晰,更容易理解。 I IGNORECASE 执行不区分大小写的匹配;字符类和字面字符串将通过忽略大小写来匹配字母。例如,[A-Z] 也 匹配小写字母。除非使用 ASCII0 码力 | 17 页 | 393.01 KB | 10 月前3Python 3.12 正则表达式 HOWTO
标记为字母的所有字符。通过在编译正则表达式时提供 re.ASCII 标志,可以在 str 表达式中使用较为狭 窄的 \w 定义。 以下为特殊序列的不完全列表。有关 Unicode 字符串正则表达式的序列和扩展类定义的完整列表,参见 标准库参考中 正则表达式语法的最后一部分。通常,Unicode 版本的字符类会匹配 Unicode 数据库的相应 类别中的任何字符。 \d 匹配任何十进制数字,等价于字符类 。正则被处理为字符串,因为正则表达式不是核心 Python 语言的 一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包含 它们来扩展语言规范。)相反,re 模块只是 Python 附带的 C 扩展模块,就类似于 socket 或 zlib 模块。 将正则放在字符串中可以使 Python 语言更简单,但有一个缺点是下一节的主题。 3.2 反斜杠灾难 如前所述,正则表达式使用反斜杠字符 匹配任何字符,包括换行符。 IGNORECASE, I 进行大小写不敏感匹配。 LOCALE, L 进行区域设置感知匹配。 MULTILINE, M 多行匹配,影响 ^ 和 $。 VERBOSE, X(为’ 扩展’) 启用详细的正则,可以更清晰,更容易理解。 re.I re.IGNORECASE 执行不区分大小写的匹配;字符类和字面字符串将通过忽略大小写来匹配字母。例如,[A-Z] 也匹 配小写字母。除非使用0 码力 | 17 页 | 404.43 KB | 10 月前3Python 3.12 正则表达式 HOWTO
标记为字母的所有字符。通过在编译正则表达式时提供 re.ASCII 标志,可以在 str 表达式中使用较为狭 窄的 \w 定义。 以下为特殊序列的不完全列表。有关 Unicode 字符串正则表达式的序列和扩展类定义的完整列表,参见 标准库参考中 正则表达式语法的最后一部分。通常,Unicode 版本的字符类会匹配 Unicode 数据库的相应 类别中的任何字符。 \d 匹配任何十进制数字,等价于字符类 。正则被处理为字符串,因为正则表达式不是核心 Python 语言的 一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包含 它们来扩展语言规范。)相反,re 模块只是 Python 附带的 C 扩展模块,就类似于 socket 或 zlib 模块。 将正则放在字符串中可以使 Python 语言更简单,但有一个缺点是下一节的主题。 3.2 反斜杠灾难 如前所述,正则表达式使用反斜杠字符 匹配任何字符,包括换行符。 IGNORECASE, I 进行大小写不敏感匹配。 LOCALE, L 进行区域设置感知匹配。 MULTILINE, M 多行匹配,影响 ^ 和 $。 VERBOSE, X(为’ 扩展’) 启用详细的正则,可以更清晰,更容易理解。 re.I re.IGNORECASE 执行不区分大小写的匹配;字符类和字面字符串将通过忽略大小写来匹配字母。例如,[A-Z] 也匹 配小写字母。除非使用0 码力 | 17 页 | 404.43 KB | 10 月前3
共 117 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12