Hy
为了自己的使用,我创建了一个python模块(espy),它允许使用参数、循环和条件代码生成宏定义:
创建source.espy文件,然后启动相应的函数,然后生成source.py。
它允许如下语法:
macro repeat(arg1):
for i in range(%arg1%):
socket
print "stop"
...
repeat(5):
print "Hi everybody"
print "See you soon"
相当于:
...
for i in range(5):
print "Hi everybody"
print "See you soon"
print "stop"
其他语法:
macro doit(arg1):
for i in %arg1%:
socket suit(arg2):
socket
print %arg2%
socket check(arg3):
if %arg2%==%arg3%:
socket
...
#use
doit(range(10)):
suit(result):
result=i*i
check(result,25):
print "I knew that 5*5 == 25"
相当于:
for i in range(10):
result=i*i
print result
if result==25:
print "I knew that 5*5 == 25"
此外,ESpy还有两个功能:“macro for”和“macro if”。一个例子:
macro for v in [6,10,12,20,23]:
macro if 7
True:
print "At %v%, I'm awake."
False:
print "At %v%, I'm sleeping."
由ESpy翻译为:
print "At 6, I'm sleeping."
print "At 10, I'm awake."
print "At 12, I'm awake."
print "At 20, I'm awake."
print "At 23, I'm sleeping."
我在很多情况下都使用这个模块。它允许更结构化和更短的代码。通过它,我从1000行espy代码中生成了65000行清晰有效的python代码,用于一个新的Chess引擎项目(仍在进行中)。
如果在未来的版本中Python可以包含宏,那么它将变得更加令人印象深刻。