我使用Python3.5输入模块,以便为我的类和函数提供类型提示。它可以很好地与PyCharm一起使用,因为它利用了这些提示。
但是,我想强制python解释器在提供类型提示时执行运行时类型检查(或者至少抛出一些警告)。
当前状态:
In [1]: def times2(number: int):
...: return number + number
...:
In [2]: times2(8)
Out[2]: 16
In [3]: times2('8')
Out[3]: '88'
期望状态:
In [1]: def times2(number: int):
...: return number + number
...:
In [2]: times2(8)
Out[2]: 16
In [3]: times2('8')
Out[3]: Assertion error: '8' is not an int
我可以以某种方式强制执行python吗?
答案 0 :(得分:0)
你可以使用这样的断言:
def times2(number: int):
assert type(number) is IntType, "number is not an int: %r" % number
return number + number
或者我误解了你的问题?
答案 1 :(得分:0)
来自https://www.python.org/dev/peps/pep-0484/#non-goals
虽然建议的键入模块将包含一些运行时类型检查的构建块[…]第三方程序包必须开发以实现特定的运行时类型检查功能
和
还应该强调的是,Python仍将是一种动态类型化的语言,即使是按照惯例,作者也不希望使类型提示成为强制性的。
Python键入被设计为一种皮棉工具,以便开发人员可以检查其代码是否正确调用了其他代码(就键入支持而言-已检查类型,但您仍然可以具有无效值!)。它不用于运行时检查,也不用于验证或拒绝用户输入。其他库可以在stdlib(https://docs.python.org/3/library/dataclasses.html)或第三方(https://github.com/search?q=python+runtime+typing&type=Repositories)中基于键入概念来实现这些概念。