在函数定义中,可以将 bool 默认参数的值定义为 argument=None 或 argument=False。
来自 pandas concat 的示例:
def concat(
objs,
axis=0,
join="outer",
join_axes=None,
ignore_index=False,
keys=None,
levels=None,
names=None,
verify_integrity=False,
sort=None,
copy=True,
):
虽然可以找到这两种用法,但为什么要使用其中一种呢?
有关于这个的 PEP 吗?
请您参考如下方法:
True 和 False 是特定的 bool 值。当您有一个 bool 字段并且您希望默认值为 False 时,使用默认的 不要使用 False。False 作为非 bool 字段的值。
None 在稍后设置值时用作通用占位符。可以打成Optional[T],相当于Union[T, None]。
您可能认为 None 和 False 很相似,因为它们都是“假的”(bool(x) 返回 False),但其他几个值也是如此,[] () {} 0 0.0 等我们不会像 None 要么。
在您的示例中,True/False 用于字段采用 bool 值的地方。 None 用于字段采用 Optional[List] 的地方。 (异常(exception)是 sort: Optional[bool],它暂时用作已弃用行为的临时兼容性工具。)
