あなたの修正
return some_func(x) - .2 and x not None and float(x) is True
少なくとも 3 つの理由で機能しません。
Python はands を遅延評価します。
つまり、 が最初にA and B評価され、次にが true の場合は が評価されます。あなたの場合、評価すると例外が発生するため、に到達することさえありません。AABAB
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ます。これが問題の原因である可能性もあります。