この小さなブロックブロックは "if"ステートメントを含んでいます。これは大きなプロジェクトの小さなコードです。コードが実行されるとき、関数 "f"、 "g"、または "k"はNoneまたは数値データを返すことができます。 Noneの値が返されるときはいつでも、計算の残りの部分はスキップされなければなりません。なぜなら、数学的演算(それらの関数で起こる)は行えないからです。 TRY/CATCHメソッドを使用してコードを書き直そうとしましたが、動作させることができませんでした。私は "if"文を避け、簡潔な方法で書き直そうとしています。私は助けに感謝します。Python: "if"ステートメントを使わずに特定の条件が満たされたときにコードブロックをスキップします
def f(output):
#some code which computes output which be None or numerical
return [output*1,2]
def g(Y):
#some code which computes Y which be None or numerical
return Y*3
def k(output):
#some code which computes output which be None or numerical
return output*4
def foutput():
#some code which computes "value" which be None or numerical
value=2.0
return 1.0*value
#####START
#some code
output=foutput()
if output is not None:
print 'S1'
[output,A]=f(output)
if output is not None:
print 'S2'
[a,b,c,Y]=[1,2,3,k(output)]
if Y is not None:
print 'S3'
A=g(Y)
else:
[Q,A,output]=[None,None,None]
else:
[Q,A,output]=[None,None,None]
else:
[Q,A,output]=[None,None,None]
try/exceptアプローチについては何が問題になりましたか? (あなたはf、g、kがNoneを返すのではなく例外をスローし、 '[Q、A、output] = [None、None、None]'をexceptブロックに入れていることを意味していると仮定します。) – KernelPanic
'関数のシグネチャを標準化し、それらを単純にチェックインすることで次々に実行させることができますが、単純なtry/exceptは十分なはずです - 関数が特定の例外を発生させてから、 '非標準'の戻り値を捕捉するtry/exceptブロック(例えば、 'None'を返した関数のどれか) – zwer