首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有方法使flake8检查源中的类型提示

是否有方法使flake8检查源中的类型提示
EN

Stack Overflow用户
提问于 2017-04-03 14:52:33
回答 4查看 10.8K关注 0票数 18

我正在启动一个新的python项目(python 3.5+),我希望在整个代码库中强制执行类型提示。有什么方法可以用flake8或其他工具来实现吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-03 14:55:46

看看形象化

在网站上:

Mypy是Python的一个实验性的可选静态类型检查器,旨在结合动态(或“鸭子”)类型和静态类型的优点。Mypy将Python的表达能力和方便性与强大的类型系统和编译时类型检查结合起来。Mypy类型检查标准Python程序;使用任何Python运行它们,基本上没有运行时开销。

编辑

实际上,mypy是一个类型检查器,因此在默认情况下,它只检查是否存在与类型相关的提示或推断错误。为了让它报告非暗示的类型,可以使用附加的命令行开关作为文档化的这里

每当--disallow-untyped-defs遇到没有类型注释的函数定义时,它都会报告错误。 --check-untyped-defs没有前面的选项严重-它的类型检查每个函数的主体,不管它是否有类型注释。(默认情况下,不带注释的函数体不进行类型检查。)它将假设所有参数都有类型为Any,并始终将其推断为返回类型。 每当具有类型注释的函数调用没有注释的函数时,--disallow-untyped-calls都会报告错误。 ..。

票数 12
EN

Stack Overflow用户

发布于 2021-07-26 15:02:46

flake8有一个名为Flake8-注释的插件

您可以使用

代码语言:javascript
复制
pip install flake8-annotations

所以:

代码语言:javascript
复制
def test_function(x, y):
  pass

将产出:

代码语言:javascript
复制
./test.py:2:9: ANN001 Missing type annotation for function argument 'x'
./test.py:3:9: ANN001 Missing type annotation for function argument 'y'
./test.py:1:24: ANN201 Missing return type annotation for public function

这是正确的版本:

代码语言:javascript
复制
def test_function(x: int, y: int) -> None:
票数 6
EN

Stack Overflow用户

发布于 2017-04-03 15:00:52

其他提到的mypy用于检查类型提示,但它没有强制执行。为了对类型注释更加严格,您需要启用以下配置设置

disallow_untyped_calls (布尔值,默认为False)不允许在没有类型注释的情况下调用带有类型注释的函数。 disallow_untyped_defs (布尔值,默认为False)不允许在没有类型注释或类型注释不完整的情况下定义函数。

或者,您可以将这些设置设置为命令行参数

FYI,PyLint还不支持强制类型注释,但是有一个特征请求。而且,我在flake8/pyflakes战线上没有看到任何相关的东西--想想打开功能请求吧。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43187829

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档