C のプリプロセッサ機能を Python で模倣する必要があります。
デバッグ リリースを実行する場合は、C で次のように使用します。
#ifdef DEBUG
printf(...)
#endif
-DDEBUG などを使用して、オンまたはオフにします。
Python/Ruby ではどのような方法を使用できますか? つまり、プロジェクト内のすべてのスクリプト ファイルに影響する変数を変更できるように、python/ruby スクリプトの動作を制御するにはどうすればよいでしょうか?
C のプリプロセッサ機能を Python で模倣する必要があります。
デバッグ リリースを実行する場合は、C で次のように使用します。
#ifdef DEBUG
printf(...)
#endif
-DDEBUG などを使用して、オンまたはオフにします。
Python/Ruby ではどのような方法を使用できますか? つまり、プロジェクト内のすべてのスクリプト ファイルに影響する変数を変更できるように、python/ruby スクリプトの動作を制御するにはどうすればよいでしょうか?
通常、このユースケースではPython ロギング機能を使用します。これは構成ファイルで構成され、出力レベルを設定できます。あなたがそれに精通していれば、使用法はJava log4jに非常に近いです。
実際の C プリプロセッサをほぼ使用できます。ファイルの名前.cをgcc -w -E input/file.py.c -o output/file.py.
主な問題はコメントにあるようです。プリプロセッサは、python コメント行が無効なプリプロセッサ ディレクティブであると文句を言います。これは、C++ コメント ( ) を使用して修正できます// comment。
または、独自の単純なプリプロセッサを作成することをお勧めします。機能だけが必要な場合#defineは、ファイルの検索と置換について話しているだけです。
別の解決策は次のようなものです。
def nothing(*args):
pass
def print_debug(msg):
print msg
if not DEBUG:
print_debug = nothing
そうすれば、デバッグ モードでない場合、print ステートメントは何も実行しません。
pypreprocessorを使用する
最新のリリースには、 PYPIからもアクセスできます
基本的な使い方は次のとおりです。
from pypreprocessor import pypreprocessor
pypreprocessor.parse()
#define debug
#ifdef debug
print('The source is in debug mode')
#else
print('The source is not in debug mode')
#endif
ほらね。Python で実装された C スタイルのプリプロセッサ条件付きコンパイル。
補足: このモジュールは python2x と python3k の両方と互換性があります。
免責事項: 私は pypreprocessor の作成者です。