跳到内容

stub 中的参数默认值 (PYI014)

源自 flake8-pyi 代码检查器。

修复总是可用的。

作用

检查存根中未类型化的函数参数是否具有非“简单”默认值 ///(即,intfloatcomplexbytesstrboolNone... 或简单的容器字面量)。

为什么这不好?

存根 (.pyi) 文件的存在是为了定义类型提示,并且不会在运行时进行评估。因此,存根文件中的函数参数不应具有默认值,因为它们会被类型检查器忽略。

但是,默认值的使用可能对 IDE 和存根文件的其他使用者有用,因此“简单”值可能值得包含并被此规则允许。

与其包含和重现一个复杂值,不如使用 ... 来表示该赋值具有默认值,但该值是非简单的,或者根据当前平台或 Python 版本而变化。

示例

def foo(arg=bar()) -> None: ...

建议改为

def foo(arg=...) -> None: ...

参考