gpt4 book ai didi

python - 如何在 python 3.6 中使用类型提示?

转载 作者:IT老高 更新时间:2023-10-28 21:45:14 24 4
gpt4 key购买 nike

我注意到 Python 3.5 和 Python 3.6 添加了很多关于静态类型检查的功能,所以我尝试使用以下代码(在 python 3.6 中,稳定版)。

from typing import List

a: List[str] = []
a.append('a')
a.append(1)
print(a)

令我惊讶的是,Python 并没有给我一个错误或警告,尽管 1 被附加到一个应该只包含字符串的 list 中。 Pycharm 检测到类型错误并给了我一个警告,但它并不明显并且没有显示在输出控制台中,我害怕有时我会错过它。我想要以下效果:

  1. 如果很明显我使用了如上所示的错误类型,则抛出警告或错误。
  2. 如果编译器无法可靠地检查我使用的类型是对还是错,请忽略它。

这可能吗?也许 mypy 可以做到,但我更喜欢使用 Python-3.6 风格的类型检查(如 a: List[str])而不是注释风格(如 mypy 中使用的 # type List[str])。我很好奇原生python 3.6中是否有一个开关来实现我上面说的两点。

最佳答案

类型提示完全应被 Python 运行时忽略,并且仅由第三方工具(如 mypy 和 Pycharm 的集成检查器)检查。还有各种鲜为人知的 3rd 方工具,它们在编译时或运行时使用类型注释进行类型检查,但大多数人使用 mypy 或 Pycharm 的集成检查器 AFAIK。

事实上,我怀疑类型检查是否会在可预见的 future 完全集成到 Python 中——参见 PEP 484 的“非目标”部分(引入了类型注释)和PEP 526 (其中引入了变量注释),以及 Guido 的评论 here .

我个人对类型检查与 Python 更紧密地集成感到满意,但似乎整个 Python 社区还没有准备好或不愿意进行这样的改变。

最新版本的 mypy 应该理解 Python 3.6 变量注释语法和注释样式语法。事实上,变量注解基本上是 Guido 最初的想法(Guido 目前是 mypy 团队的一员)——基本上,mypy 和 Python 中对类型注解的支持几乎是同时开发的。

关于python - 如何在 python 3.6 中使用类型提示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41356784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com