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.