PEP 638 – Syntactic Macros
6 months ago
- #Macros
- #Python
- #Language Extensions
- PEP 638提案建议为Python添加语法宏功能,支持编译时AST转换
- 宏机制可在不增加Python核心复杂度的前提下实现领域特定语言扩展
- 提案动机包括避免争议性新特性,并支持数据科学等领域的特定需求
- 宏可为新语言特性提供试验场,待成熟后再正式纳入,提升功能质量与可靠性
- 语法设计包含语句宏和表达式宏两种形式,使用`import!`和`from!`导入宏
- 宏处理器需定义可调用对象、类型、版本号及可选附加名称
- 新增AST节点(macro_stmt, macro_expr, stmt_expr)以支持宏功能
- 应用场景示例包括编译期数据结构检查、领域特定解析器、零开销注解等
- 保持向后兼容性,性能影响仅作用于使用宏的代码
- 实现方案要求将AST节点改造为不可变Python对象以提高效率