あなたの修正
return some_func(x) - .2 and x not None and float(x) is True
少なくとも 3 つの理由で機能しません。
Python はand
s を遅延評価します。
つまり、 が最初にA and B
評価され、次にが true の場合は が評価されます。あなたの場合、評価すると例外が発生するため、に到達することさえありません。A
A
B
A
B
none でないことのチェックはx is not None
、 notx not None
です。
問題は でsome_func(x)
ありNone
、 ではないということx
ですNone
。後者のチェックは無関係です。
とにかく、解決策は、 である可能性のある値から float を減算しないことNone
です。これを行う最善の方法は、 が をsome_func
返さないことを保証することです。これはNone
、そのコードを変更することで実行できます。次善の策は、次のように実行できる戻り値を確認することです。
output = some_func(x)
if output is not None:
return output - 0.2
ちなみに、関数が何も返さない場合は、暗黙的に を返すと見なされることに注意してくださいNone
。したがって、上記のコードは、実行されたNone
場合に返されsome_func
ます。これが問題の原因である可能性もあります。