Har Python makroer? I bekræftende fald, hvordan fungerer de?


Bedste svar

Python selv har ikke makroer, men du kan slags falske dem ved hjælp af det indbyggede AST-modul til parse og genindlæse koden i farten. Dette er Python-magi til det yderste.

Hvis du ikke har tålmodighed eller interesse i at gøre dette selv, er karnickel (http://pypi.python.org/pypi/karnickel) et lille bibliotek, der definerer makroer på den måde, som jeg beskrev. Ved hjælp af karnickel kan du definere en makro som sådan:

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

Nej, men teknisk set har C / C ++ heller ikke. Eller for at sige det på en anden måde kan alle programmeringssprog have makroer.

Sagen er, at C og C ++ kompilatorer udvider ikke makroer. Det gøres af C-forprocessoren. Og forprocessoren er uafhængig af compileren. Det betyder, at du også nemt kan bruge den til Python-kildekode.

Så hvis du vil, kan du definere og udvide C-makroer i din Python-kode (eller en hvilken som helst anden programmeringssprogkode) og producere præ- behandlet kilde, som du vil give til tolken bagefter.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *