Cel mai bun răspuns
Python în sine nu are macrocomenzi, dar le puteți falsifica folosind modulul AST încorporat pentru analizează și reîncarcă codul din mers. Aceasta este magia Python până la extrem.
Dacă nu aveți răbdare sau interes să faceți acest lucru singur, karnickel (http://pypi.python.org/pypi/karnickel) este o mică bibliotecă care definește macrocomenzile exact așa cum am descris. Folosind karnickel, puteți defini o macro astfel:
În macros.py:
from karnickel import macro
@macro
def custom\_loop(i):
for \_\_x in range(i):
print \_\_x
if \_\_x < i-1:
\_\_body\_\_
În 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!"
Răspuns
Nu, dar din punct de vedere tehnic, nici C / C ++ nu. Sau, altfel spus, toate limbajele de programare pot avea macrocomenzi.
Lucrul este că C și C ++ compilatoarele nu extind macrocomenzile. Acest lucru este realizat de preprocesorul C. Și preprocesorul este independent de compilator. Adică, îl puteți folosi cu ușurință și pentru codul sursă Python.
Deci, dacă doriți, puteți defini și extinde macrocomenzi C în codul Python (sau orice alt cod de limbaj de programare), producând sursă procesată pe care o veți alimenta ulterior interpretului.