2

C のプリプロセッサ機能を Python で模倣する必要があります。

デバッグ リリースを実行する場合は、C で次のように使用します。

#ifdef DEBUG
printf(...)
#endif

-DDEBUG などを使用して、オンまたはオフにします。

Python/Ruby ではどのような方法を使用できますか? つまり、プロジェクト内のすべてのスクリプト ファイルに影響する変数を変更できるように、python/ruby スクリプトの動作を制御するにはどうすればよいでしょうか?

4

3 に答える 3

5

通常、このユースケースではPython ロギング機能を使用します。これは構成ファイルで構成され、出力レベルを設定できます。あなたがそれに精通していれば、使用法はJava log4jに非常に近いです。

于 2010-04-21T16:29:25.767 に答える
2

実際の C プリプロセッサをほぼ使用できます。ファイルの名前.cgcc -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 ステートメントは何も実行しません。

于 2010-04-21T16:42:17.923 に答える
2

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 の作成者です。

于 2010-06-07T07:26:39.620 に答える