向函数添加可选参数

The*_*bot 3 optional-parameters type-hinting python-3.x

我正在开发一个项目,我应该在现有代码库中添加新功能。作为其中的一部分,我需要向其中一个函数添加一个可选参数,但仅添加可选参数就会导致我的一些单元测试失败。

该函数最初如下所示:

def function(
    data1: list,
    data2: list,
    opt1: Optional[list],
)
Run Code Online (Sandbox Code Playgroud)

添加另一个可选参数后,它看起来像这样:

def function(
    data1: list,
    data2: list,
    opt1: Optional[list],
    new: Optional[dict],
)
Run Code Online (Sandbox Code Playgroud)

我在代码库中所做的唯一更改是添加此可选参数,它导致我的一些单元测试失败。我想知道是否有人知道可能是什么原因?

Sel*_*cuk 5

Optional[list]意味着参数可以是 alistNone。您仍然需要从调用者那里传递它。

如果您想要一个可以省略的参数,您应该使用默认值,例如:

def function(
    data1: list,
    data2: list,
    opt1: Optional[list] = None,
)
Run Code Online (Sandbox Code Playgroud)

假设这None意味着函数逻辑中省略了参数。

从 Python 3.10 开始,您可以使用|运算符来去掉UnionandOptional关键字:

opt1: list | None = None
Run Code Online (Sandbox Code Playgroud)