Pythonにはマクロがありますか?もしそうなら、それらはどのように機能しますか?


ベストアンサー

Python自体にはマクロがありませんが、組み込みのASTモジュールを使用してマクロを偽造することができます。その場でコードを解析してリロードします。これは極端なPythonの魔法です。

これを自分で行う忍耐力や興味がない場合、karnickel(http://pypi.python.org/pypi/karnickel)は小さなライブラリです。私が説明した方法でマクロを定義します。karnickelを使用すると、次のようにマクロを定義できます。

macros.py:

from karnickel import macro

@macro

def custom\_loop(i):

for \_\_x in range(i):

print \_\_x

if \_\_x < i-1:

\_\_body\_\_

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

回答

いいえ。ただし、技術的には、C / C ++もありません。言い換えると、すべてのプログラミング言語にマクロがある場合があります。

CとC ++が重要です。コンパイラはマクロを展開しませんそれはによって行われますCプリプロセッサ。また、プリプロセッサはコンパイラに依存しません。つまり、Pythonソースコードにも簡単に使用できるということです。

したがって、必要に応じて、Pythonコード(またはその他のプログラミング言語コード)でCマクロを定義および展開して、事前に生成することができます。後でインタプリタにフィードする処理済みソース。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です