为什么Python不会使用' - >抛出类型异常输入'函数定义?

时间:2016-08-11 09:44:48

标签: python python-3.x exception types type-hinting

在其他语言中,类似示例的任何内容都会引发类型错误。为什么不用Python?

>>> def foo(a:int) -> str:
    return a+1

>>> foo(5)
6

1 个答案:

答案 0 :(得分:9)

Python中的类型提示是可选添加,以帮助静态代码分析和编辑。

来自PEP 484 -- Type Hints specification

  

请注意,此PEP仍明确不会阻止其他注释用法,也不会要求(或禁止)任何特定的注释处理,即使它们符合此规范。它简单地实现了更好的协调,正如PEP 333为Web框架所做的那样。

  

虽然这些注释在运行时通过通常的__annotations__属性可用,但在运行时没有进行类型检查。相反,该提议假定存在一个单独的离线类型检查器,用户可以自动运行其源代码。从本质上讲,这种类型的检查器就像一个非常强大的linter。 (虽然个别用户当然可以在运行时使用类似的检查器来进行设计合同执行或JIT优化,但这些工具还不够成熟。)

请注意,类型提示是Python的一个新增功能,PEP旨在协助协作,而不是强制对语言进行运行时类型检查。

Python 不是一种静态类型语言,它仍然是非常动态的类型。您可能会将此功能与静态类型语言中的类型声明混淆。

将来,可能可能是Python增加了对严格模式的支持(类似于Hack does this的方式),但现在不在桌面上。< / p>