Har Python makroer? Hvis ja, hvordan fungerer de?


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å.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *