私は2つの関数を持っていますが、それぞれは3番目の関数を呼び出しますが、わずかに異なるものが返されると予想します。関数がPythonで呼び出された場所に基づいて異なる値を返す
すべての機能は別々のファイルにあります。ファイルAとBは互いにインポートできないため、関数AとBは互いに呼び出すことができません。これを整理する最良の方法は何ですか?
私はDRYプリンシパルと一致するように、ほとんどの機能が同じであるため、機能の重複を避けたいと思います。ここで
は私が持っているもののためにいくつかの擬似コードである、と私はプログラムを考えてどのように構造化することになります。#FileA.py
def functionA():
useableData = functionC(rawData)
-
#FileB.py
def functionB():
useableData = functionC(rawData)
-
#FileC.py
def functionC(rawdata):
*Extensive processing/formatting of data*
if C run from A:
return useableData
if C run from B:
*A bit more processing of data*
return useableData
私が考えることができる唯一の解決策は、rawdata
と一緒に2番目の変数を渡すことです。それが由来する機能のame。しかし、これは私にとってうらやましいようです。
これを行うには理想的な方法はありますか?おそらく、関数がどこから呼び出されたかチェックする必要はなく、functionC
は、データが返される場所によって若干異なる結果を返すことが可能です。私は少しコードを再構成することができるかもしれませんが、3つの機能はすべて現在のファイルに残す必要があります。
を呼び出し、[トレースバック](HTTPSが常にあります。 org/2/library/traceback.html)モジュールを使用します。コンテキスト情報を追加することなく、呼び出し元に基づいて動作を変更するのは悪い形です。 –
2番目のパラメータ 'moreProcessing = False'を追加するだけですが、実行する処理の_type_を指定する追加の引数を追加するのは悪い方法ではありません。 –
functionAに必要なファイルAに特有のものと、functionBにはfileB固有のものを入れ、functionCは両方に共通するものだけを処理することをお勧めします。 – glibdud