字节码和ast编程工具

meta的Python项目详细描述


一个纯python模块,包含一个用于操作和分析的框架 python抽象语法树和字节码。

示例

这将演示如何将python源代码带到代码对象,然后从python中再次返回:

importmeta,astsource='''
a = 1
b = 2
c = (a ** b)
'''mod=ast.parse(source,'<nofile>','exec')code=compile(mod,'<nofile>','exec')mod2=meta.decompile(code)source2=meta.dump_python_source(mod2)assertsource==source2

这显示了depyc脚本。脚本编译自身,然后编译的脚本提取自身:

DEPYC_FILE=`python -c"import meta.scripts.depyc; print meta.scripts.depyc.__file__"`
depyc $DEPYC_FILE --pyc > depycX.pyc
python -m depycX depycX.pyc --python > depycX.py
echo depycX.py

注释

  • meta符合python3标准(大部分)

错误

  • 解压缩程序尚不支持复杂的list/set/dict-comprehensions

测试

python -m unittest discover meta

test

版本控制

从版本1.0.0开始,meta跟随Semantic Versioning。 版本x.y.z表示:

  • X是主要版本(向后不兼容),
  • y是次要版本(向后兼容),并且
  • z是修补程序版本(向后兼容的错误修复)。

在版本1.0.0之前,使用了自定义版本控制方案。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java例外。Lang.Stringindexoutofboundsexception索引超出范围(0)   java Spring引导Freemarker从2.2.0升级失败   重构Java反模式名称?包含对象的对象包含。。。等   用java处理JDBC可能出现的死锁的最佳方法   java无法访问主线程上的数据库,因为它可能会在很长一段时间内锁定UI   java如何将固定大小的画布包装在边框窗格中的滚动窗格居中?   java解析xsd文件后得到空结果   在html页面中表示XML文件的java   socketjava对象流   sql Java越界异常数据库   JavaJBoss7.1.1不会在Mavericks上启动   Twincat ADS事件驱动读取在一段时间后停止工作(Java)   java MyBatis使用生成的ID插入所有   Mojave上缺少MacOS Java控制面板   JavaGuice:如果多次注入相同的依赖项,是否注入了该依赖项的相同实例?