Má Python makra? Pokud ano, jak fungují?


Nejlepší odpověď

Python sám o sobě nemá makra, ale můžete je předstírat pomocí vestavěného modulu AST k analyzovat a znovu načíst kód za běhu. Toto je krajní kouzlo Pythonu.

Pokud nemáte trpělivost nebo zájem to udělat sami, karnickel (http://pypi.python.org/pypi/karnickel) je malá knihovna, která definuje makra přesně tak, jak jsem popsal. Pomocí karnickelu můžete definovat makro takto:

V 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!"

odpověď

Ne, ale technicky vzato, ani C / C ++. Jinými slovy, všechny programovací jazyky mohou mít makra.

Jde o to, že C a C ++ kompilátoři nerozšiřují makra. To je hotovo preprocesor C. A preprocesor je nezávislý na kompilátoru. To znamená, že byste jej mohli snadno použít i pro zdrojový kód Pythonu.

Takže pokud chcete, můžete definovat a rozšířit C makra ve svém kódu Pythonu (nebo jakémkoli jiném kódu programovacího jazyka), čímž vytvoříte pre- zpracovaný zdroj, který následně podáte tlumočníkovi.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *