我想在 python 中添加一个新功能,纯粹出于实验目的,我想扩展装饰器语法。目前装饰器可以应用于函数和类。我还想在循环(for
例如循环)以及代码块上使用装饰器。
示例 1:
@foo
for i in range(20):
# do something
# and something more
示例 2:
@foo
# there's a block starting from an indent here.
# there's some code now
# do something
# and something more
现在虽然这是基本思想,但我的要求是修改装饰器的主体。例如,我想根据应用于它的装饰器稍微更改循环。我可以为此使用 AST 模块。
问题是我不想完全添加新语法及其完整实现。我只想用新语法解析,访问解析树和装饰器的主体,对其进行操作并将其插入程序的主体,删除装饰器,从而将具有新语法的程序更改为 python 的语法马上。
关于我将如何做这件事的任何想法?