python - 有没有办法以编程方式生成 Python 字节码?

标签 python expression-trees abstract-syntax-tree dsl bytecode

我想尝试使用 Python 解释器并尝试创建一个小型 DSL。是否有任何模块可以让我做类似这个理论代码(类似于 LINQ 表达式树)的事情?

expression_tree = Function(
    Print(
        String('Hello world!')
    )
 )
compile_to_bytecode(expression_tree)

或者只生成 Python 源代码会更容易吗?使用 C 或 SWIG 或 Cython 可以使这更容易吗?

最佳答案

正如另一个答案所暗示的那样,通过 ast 工作并将树编译成字节码可能是最简单的;生成源代码并编译它们,几乎一样好。

但是,要探索较低级别的方法,请查看来自 this page 的链接。 ;我找到了 byteplay特别有用(目前不适用于 2.6 或 3.*,仅适用于 2.4 或 2.5,但我认为针对 2.6 修复它应该很容易,正如目前在其跟踪器中所讨论的那样)。我没有使用过 Phil Eby 的类似功能 BytecodeAssembler ,但考虑到作者的声誉,我确信它值得一试!

关于python - 有没有办法以编程方式生成 Python 字节码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1482055/

相关文章:

python - 导入错误 : No module named _ssl

c# - 如何从 MethodCallExpression 访问 OrderBy 子句

javascript - 解析 javascript 函数中的外部范围引用以进行序列化

java - 在 Java 中生成 C 程序的对象模型/AST

antlr - 在 ANTLR 中生成简单的 AST

python - 在 Enthought Canopy 安装过程中按 Ctrl+C - 现在出现 Seg Faults

python - DataFrame.values 中的更改是否总是会修改数据框中的值?

python - Django runserver 报错,全新安装,Django 初次使用者

.net - 表达式树.net

c# - 参数 '***' 未绑定(bind)到指定的 LINQ to Entities 查询表达式中