Beste svaret
Python selv har ikke makroer, men du kan slags falske dem ved å bruke den innebygde AST-modulen til analysere og laste inn kode på farten. Dette er Python-magi til det ytterste.
Hvis du ikke har tålmodighet eller interesse for å gjøre dette selv, er karnickel (http://pypi.python.org/pypi/karnickel) et lite bibliotek som definerer makroer akkurat slik jeg beskrev. Ved å bruke karnickel kan du definere en makro slik:
I makroer.py:
from karnickel import macro
@macro
def custom\_loop(i):
for \_\_x in range(i):
print \_\_x
if \_\_x < i-1:
\_\_body\_\_
I eksempel.py:
# Install the import hook.
import karnickel
karnickel.install\_hook()
from macros.\_\_macros\_\_ import custom\_loop
with custom\_loop(10):
print "I"m looping!"
Svar
Nei, men teknisk sett gjør ikke C / C ++ det heller. Eller for å si det på en annen måte, alle programmeringsspråkene kan ha makroer.
Saken er at C og C ++ kompilatorer utvider ikke makroer. Det gjøres av C-prosessoren. Og forprosessoren er uavhengig av kompilatoren. Det betyr at du også enkelt kan bruke den til Python-kildekode.
Så hvis du vil, kan du definere og utvide C-makroer i Python-koden din (eller en hvilken som helst annen programmeringsspråkkode), og produsere pre- behandlet kilde som du vil mate til tolken etterpå.