李欣宜 扩展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]。 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,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 匹配任何十进制数字,等价于字符类 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,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 匹配任何十进制数字,等价于字符类 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,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 匹配任何十进制数字,等价于字符类 的一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包 含它们来扩展语言规范。)相反,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 匹配任何十进制数字,等价于字符类 一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包含 它们来扩展语言规范。)相反,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 匹配任何十进制数字,等价于字符类 一部分,并且没有创建用于表达它们的特殊语法。(有些应用程序根本不需要正则,因此不需要通过包含 它们来扩展语言规范。)相反,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
共 119 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12