2016-10-29 8 views
0

(python)ここで私は良い回避策を見つけられませんでした。いくつかの分離度に変数を渡す

それでは、「do_other_stuffは」など、他の機能、カスケード呼び出していることを言わせてのは、私はソースファイルmyfunc.pyに

# myfunc.py 

bool_val = False 

# Potentially change flag 
if (some_condition_is_met): 
    bool_val = True 

# Many other function calls down the line 
do_other_stuff() 

をブール旗を持っているとしましょう:

do_other_stuffを( )そして、その後、FUNC3() ... 、最終的にイムを呼び出し関数func2()を呼び出し関数func1()を呼び出し portantfunc()が呼び出されます。

さて、「importantfuncは」「bool_val」の値が

# importantfunc.py 
if bool_val is True: 
    do_something() 
elif bool_val is False: 
    do_something_else() 

が何であるかを知る必要があり、問題は私のSWアーキテクチャは、カスケードダウン「bool_val」の値を渡すことは非常に非現実的になるということです関数呼び出し。

誰もこの問題を回避する方法について考えていますか?それとも何か明白な私が行方不明ですか?前もって感謝します。

+1

を、あなたは、クラスでこれらの機能を入れて最初にフィールドとしてブール値を格納できます、最後にアクセスしてください。 –

+0

ありがとう、Alex、残念ながら、これらの関数は別々のソースファイルに存在する必要があります。 (関数は実際にはより広いオブジェクト指向アーキテクチャーのクラスメソッドですが、問題を定義する上で単純な関数として残しました) – MRM

+0

関数内の最初の代入はありますか?そうでない場合は、グローバル変数を設定する必要があり、関数は自動的にグローバル変数を使用します。 – Barmar

答えて

0

あなたが疑問に呼び出しにアーキテクチャを実行している問題は、この試みるものの:あなたの状況に応じて

global bool_val = False 
関連する問題