在函数定义中,可以将布尔默认参数的值定义为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,
):
Run Code Online (Sandbox Code Playgroud)
虽然可以找到两种用法,但为什么一个要比另一个使用呢?
这有PEP吗?
True和False特定bool值。False当您有一个bool字段并且希望默认值为“ False.不要False用作非bool字段的值” 时,请使用默认值。
None稍后将设置值时,用作通用占位符。可以键入as Optional[T],等效于Union[T, None]。
你可能会思考None和False相似,因为他们都是“falsy”(bool(x)收益False),但相同的是其他几个值的真,[] () {} 0 0.0等我们不喜欢使用它们None要么。
在您的示例中,True/ False用于字段为布尔值的地方。None用于字段需要的地方Optional[List]。(例外是sort: Optional[bool],它暂时用作不赞成使用的行为的临时兼容性工具。)