首页 > 解决方案 > Python:如何为非 NaN 或 Infinity 的浮点数定义自定义数据类型?

问题描述

我希望能够将赋予函数的参数强制为不是 NaN 或 Infinity 的浮点数,并以干净的方式执行。

像这样:

def f(x: NumberFloat):
    assert isinstance(x, NumberFloat)
    ...

我想,我需要定义自己的类。但具体如何?

或者我可以为这个函数做一个装饰器?

标签: pythontype-hinting

解决方案


实现这一目标的最简单方法是使用数学。无限。如果给定的数字是有限的且不包括NaN 和 ,则该函数为 True inf。在这一切中请注意,在 Python 中,请求宽恕比请求许可更好。因此,仅在确实需要时才检查输入。


推荐阅读