使用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

作者

乔治布兰德,georg@python.org>;

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

推荐PyPI第三方库


热门话题
在java中的字符串字符下打印星号(*)   java在比较数据后得到错误的结果   java如何在使用JSP创建的网站中创建父子关系和处理?   java配置单元UDF:无法执行求值方法   java GAE项目Intellij远程调试在关闭时不释放端口   java按钮上的放大和缩小功能点击JfreeChart折线图?   java Selenium Chrome Web驱动程序SessionNotCreatedException   java由ADFactoryBuilder生成的线程工厂是线程安全的吗?   java将字符串[]传递给另一个类Android(使用intent)   我为什么要嘲笑java?   JavaLiferay门户不将对象从流程阶段发送到jsp   java我想在单击每个树节点时将要添加的信息放入jpanel jscrollpane中   在Java中模拟数组引用(即对引用的引用)的按引用传递   Jackson将JSON属性反序列化为不同的Java对象   java使用JSP/servlet在网页上显示Excel工作表?   仿射变换Java:使用仿射变换时游戏速度减慢   Servlet JBoss AS 7的java EJB注入   在Oracle数据库中使用Java的plsql   java管理Maven项目中的库依赖项   JavaEclipseLink(JPA)异常:复合主键@JoinColumn