これら 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
は、このチェックを行うための正しいイディオムです。真値検定を参照してください。