使用ast的python宏
karnickel的Python项目详细描述
“这不是普通的兔子……”
这是什么?
Karnickel是一个小型库,允许您使用宏(类似于 在python代码中。简而言之,宏允许您插入代码 (宏definition)位于代码中的不同点(宏call)。 它不同于调用函数,因为代码是在之前插入的。 甚至是编译的。
(“karnicket”是德语中的“rabbit”,还有一个凶残的杀手 “Python与圣杯”中的兔子,最好不要打扰……
使用
使用Python2.6+。可以在任何模块中放置宏。宏定义是 python函数,如下:
from karnickel import macro @macro def macroname(arg1, arg2): ... macro contents ...
不支持可选参数。
如果内容是单个表达式(没有return),则宏是 表达式宏。否则,它是一个block宏。如果它包含 语句只由__body__组成,它是一个块宏,具有body。
要使用宏,必须安装导入挂钩:
import karnickel karnickel.install_hook()
然后,您可以导入使用如下宏的模块:
from module.__macros__ import macro1, macro2
也就是说,将.__macros__附加到包含 宏。只支持from-导入。
用法取决于宏类型:
表达式宏可以在任何地方用作表达式。提出论点 在宏参数的地方。
没有body的块宏只能用作表达式语句- 即:
macroname(arg1, arg2)
带有body的块宏必须与with语句一起使用:
with macroname(arg1, arg2): body
参数放在宏参数的位置,主体放在 在宏定义中__body__的位置。
只要我能找到一个像样的文档工具,正确的文档就可能随之而来。
为什么?
为什么不呢?说真的,这是对python的演示 ast,特别是标准的ast模块和导入挂钩。另外,是 很有趣。
安装
使用setup.py:
sudo python setup.py install