3

これら 2 つの python イディオムの違いは何ですか?

if data is not None: return data

if data: return data

4

1 に答える 1

13

後者はFalse0[](){}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は、このチェックを行うための正しいイディオムです。真値検定を参照してください。

于 2013-06-14T21:13:52.773 に答える