これら 2 つの python イディオムの違いは何ですか?
if data is not None:
return data
if data: return data
後者はFalse、0、[]、()、{}、set()、''およびメソッドが False を返すその他の値 (__bool__ほとんどの空のコレクションを含む) も拒否します。
PythonのNone値は、値がないことを示すためによく使用されます。関数が明示的に値を返さない場合、自動的に表示されます。
>>> def f():
... pass
>>> f() is None
True
次のように、オプションのパラメーターのデフォルト値としてよく使用されます。
def sort(key=None):
if key is not None:
# do something with the argument
else:
# argument was omitted
ここでのみ使用した場合if key:、false と評価された引数は考慮されません。明示的に比較することis Noneは、このチェックを行うための正しいイディオムです。真値検定を参照してください。