Skip to main content
 首页 » 编程设计

python之python 的默认参数值中的 None 和 boolean (True, False) 有什么区别

2025年05月04日14emanlee

在函数定义中,可以将 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],它暂时用作已弃用行为的临时兼容性工具。)