[英]How to use Python3.5 typing as runtime checks?
我使用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吗?
您可以这样使用断言:
def times2(number: int):
assert type(number) is IntType, "number is not an int: %r" % number
return number + number
还是我误解了你的问题?
来自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 )。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.