Python are macrocomenzi? Dacă da, cum funcționează?


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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *