3

这两个python习语有什么区别?

if data is not None: return data

if data: return data

4

1 回答 1

13

后者还将拒绝False, 0, [], (), {}, set(),''以及任何其他__bool__方法返回 False 的值,包括大多数空集合。

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 回答