5

これは使用方法ではなくargparse、プログラムで解析されたオプションを使用する方法です。

オプションをチェックする/関数のオプションの値を使用するための良いテクニックは何ですか?

いくつかのアイデア:

  • グローバル変数(モジュール変数)の使用
  • 値を使用する関数にパラメーターを追加し、それを渡します(場合によっては複数の関数レベル)
  • if何かがオプションに依存するたびに-clauseで確認してください(グローバル変数を使用しますか?)
  • いくつかのチェックのための特別な関数を定義する

私が監督したいくつかのテクニックが必要です。これは、特にプログラムのさまざまな部分に複数のファイルがある場合、多くのオプションを備えた大きなプログラムでは実行できないようです。

4

1 に答える 1

4

私の意見では、引数の解析は、アプリケーションのエントリポイントで実行されるものでなければなりません。ライブラリ/モジュールロジックは不可知論者であり、パラメータで初期化する必要があります。

つまり、実行可能なアプリケーションに入力ファイルへのパスが必要な場合、main()エントリポイントはargparseを受け入れるために使用できます--infile。ただし、ライブラリ関数readfileはargparseの知識がなく、メンバー属性として受け取るクラスの一部であるかinfile、パラメーターとして直接受け取る必要があります。

class Reader(object):
    def __init__(self, infile):
        self.infile = infile

    def readfile(self):
        # read(self.infile)

または...

def readfile(infile):
    # read(infile)

もう1つのアプローチは、構成ファイルを使用し、構成パーサーモジュールがある場合です。これは、読み込まれて解析され、グローバルアプリケーション構成オプションを必要とするすべてのモジュールで引き続き使用できます。このアプローチの例は、djangoがsettingsモジュールを持っている方法です。djangoプロジェクト内のすべてのアプリケーションは、設定をインポートしてクエリできます。

于 2012-12-10T21:44:50.940 に答える