Beste antwoord
Python zelf heeft geen macros, maar je kunt ze nep maken door de ingebouwde AST-module te gebruiken om ontleden en herlaad code on the fly. Dit is tot het uiterste Python-magie.
Als je “niet het geduld of de interesse hebt om dit zelf te doen, is karnickel (http://pypi.python.org/pypi/karnickel) een kleine bibliotheek die definieert macros precies zoals ik heb beschreven. Met karnickel kun je een macro als volgt definiëren:
In macros.py:
from karnickel import macro
@macro
def custom\_loop(i):
for \_\_x in range(i):
print \_\_x
if \_\_x < i-1:
\_\_body\_\_
In example.py:
# Install the import hook.
import karnickel
karnickel.install\_hook()
from macros.\_\_macros\_\_ import custom\_loop
with custom\_loop(10):
print "I"m looping!"
Antwoord
Nee, maar technisch gezien doet C / C ++ dat ook niet. Of, anders gezegd, alle programmeertalen kunnen macros hebben.
Het punt is dat de C en C ++ compilers breiden macros niet uit. Dat wordt gedaan door de C-preprocessor. En de preprocessor is onafhankelijk van de compiler. Dit betekent dat je het ook gemakkelijk kunt gebruiken voor Python-broncode.
Dus, als je wilt, kun je C-macros definiëren en uitbreiden in je Python-code (of een andere programmeertaalcode), waardoor pre- verwerkte bron die u daarna aan de tolk zult doorgeven.