Czy Python ma makra? Jeśli tak, jak one działają?


Najlepsza odpowiedź

Sam Python nie ma makr, ale można je w pewnym sensie sfałszować, używając wbudowanego modułu AST przeanalizuj i załaduj ponownie kod w locie. To jest ekstremalna magia Pythona.

Jeśli nie masz cierpliwości lub zainteresowania, by zrobić to samemu, karnickel (http://pypi.python.org/pypi/karnickel) to mała biblioteka, która definiuje makra w sposób, który opisałem. Używając karnickela, możesz zdefiniować makro w następujący sposób:

W macros.py:

from karnickel import macro

@macro

def custom\_loop(i):

for \_\_x in range(i):

print \_\_x

if \_\_x < i-1:

\_\_body\_\_

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

Odpowiedź

Nie, ale technicznie rzecz biorąc, C / C ++ też nie. Lub, mówiąc inaczej, wszystkie języki programowania mogą mieć makra.

Rzecz w tym, że C i C ++ kompilatory nie rozwijają makr preprocesor C. Preprocesor jest niezależny od kompilatora. Oznacza to, że możesz z łatwością użyć go również do kodu źródłowego Pythona.

Więc, jeśli chcesz, możesz zdefiniować i rozwinąć makra C w swoim kodzie Pythona (lub dowolnym innym kodzie języka programowania), tworząc wstępnie przetworzone źródło, które następnie przekażesz tłumaczowi.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *