質問:多くの外部データに依存する大きな関数をどのように構成するか。クラスを宣言し、それらの外部データを含める必要がありますか?大きな機能とそのデータを1つのファイルに保存する必要がありますか?または、それを行うためのより良い方法がありますか?最も計算効率の高い方法は何ですか?どのようなpythonic、推奨された方法は何ですか?Python、多くの外部データに依存する大きな関数を構成する方法
私は解析するログファイルを持っており、ログファイルには多くの形式の文字列が含まれています。すべての可能なフォーマットを処理するparseLine(inputStr)関数を書いた。 parseLine()関数は多くのプリコンパイルされた正規表現と検索のための非常に大きな辞書を必要とします。その後、mytimeCriteriaを決める、私のメインのコードでは
regex0 = re.compile('foo')
regex1 = re.compile('bar')
# and many more regexes
set0 = {'f', '0'}
set1 = {'b', 'a'} # could be a big set contains 10s of strings
# and many more sets
def parseLine(inputString, inputDictionary, inputTimeCriteria):
# pseduo code:
# use regex0 to extract date info in inputString
# check if date within inputTimeCriteria
# use more of previous declared regexes and sets to extract more info,
# branch out to different routines to use more regexes and sets to extract more info
# finally use inputDictionary to look up the meaning of extracted info
# return results in some data structure
、私はparseLineFile.py
ビルドmyDictionaryをインポートすると:私は私のparseLineFile.pyがどのように見える
parseLineFile.py
ファイルにparseLine()関数を保持しましたparseLine()を使用してファイルを1行ずつ解析します。私は自分の質問がスタックオーバーフローicではないと感じていますが、狭い/具体的な質問をどのようにしなければならないかコメントしておきたいなら、それは素晴らしいことです!私の問題にどうやってアプローチするかについても言及してください。
実際に関連ビットを表示していないときに、コードの計算効率を誰かが有効に議論できる人はいないと思います。 – Blckknght
これはprogrammers.stackexchange.comの質問のようです。 – cphlewis
それをすべて独自の.pyファイルに保存することは合理的な選択です。そのモジュールの名前空間に含まれています。独自のプライベートデータで複数のインスタンスを保持する必要がない場合は、クラスに移動する必要はありません。あなたが今持っているものに固執する。 – tdelaney