我正在使用Python 3.6,并希望定义一个带有两个整数a
和b
的函数,并返回它们的除法c = a//b
。我想在不使用assert
的情况下强制执行输入和输出类型。根据我在文档和本网站上发现的内容,我的理解是应该定义这个函数:
def divide(a: int, b: int) -> int:
c = a // b
return c
divide(3, 2.) # Output: 1.0
我期待错误(或警告),因为b
和c
不是整数。
assert
?答案 0 :(得分:5)
执行运行时验证目前仅由用户代码完成,例如使用第三方库。
其中一个选择是enforce:
>>> import enforce # pip install enforce
>>> @enforce.runtime_validation
... def divide(a: int, b: int) -> int:
... c = a // b
... return c
...
...
>>> divide(3, 2.0)
RuntimeTypeError:
The following runtime type errors were encountered:
Argument 'b' was not of type <class 'int'>. Actual type was float.