Python 静态类型不起作用

标签 python python-3.x static-typing

我发现 Python 打算支持静态类型,但它仍处于测试阶段。 我用 python 3.4.3 尝试了以下代码:

def somme(a: int, b: int) -> int:
    return a + b

支持语法,但我没有得到预期的结果。如果我输入 somme('1', '3') 我得到 13,而我应该得到 TypeError 异常说 int variable expected

有谁知道为什么它不起作用?

最佳答案

那里的函数注解只有注解,仅此而已。它们是有关预期用途的文档。就像它在 PEP 3107 中所说的那样,该机制提供了一种单一的标准方式来指定函数参数和返回值,取代了各种临时工具和库。

但是正如它继续说的那样:

Function annotations are nothing more than a way of associating arbitrary Python expressions with various parts of a function at compile-time.

By itself, Python does not attach any particular meaning or significance to annotations. Left to its own, Python simply makes these expressions available as described in Accessing Function Annotations below.

PEP 484添加更多约定和工具以使用这些注释来标记类型,在 Python 3.5 中采用。但是语言本身仍然没有运行时检查:它“包括对离线类型检查器的支持,例如 mypy”。

也就是说,在使用这些注解后,您可以运行第三方类型检查器来检查您的代码是否符合注解的类型。将这些注释构建到语言中应该可以使各种 IDE 更容易提供此服务。

关于Python 静态类型不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526876/

相关文章:

scala - Scala(最新 2.10)与 Groovy++(最新 0.9.1?)的比较

python - 使用 PySpark 中的列值组合查找最小和最大范围

python-3.x - Python3检查IP地址是否是全局的

python - 检查输入 : expected lstm_28_input to have shape (5739, 8) 时出错,但得到形状为 (1, 8) 的数组

python - Tensorflow.py protected 划分

python-3.x - dockerizing 期间无法在 alpine 上安装 pycosat

html - TypeScript:类型系统的问题

Python函数参数类型依赖关系

Python,将 mongodump 的 bson 输出转换为 json 对象数组(字典)

python - 如何将多维 h5py 数据集复制到平面一维 Python 列表而不制作任何中间副本?