Heeft Python macros? Zo ja, hoe werken ze?


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.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *