如何在 Python 中键入提示通用数字类型?

新手上路,请多包涵

如果之前有人问过这个问题但我找不到任何相关答案,请原谅我。

考虑一个将数字类型作为输入参数的函数:

 def foo(a):
    return ((a+1)*2)**4;

这适用于整数、浮点数和复数。

是否有基本类型,以便我可以进行类型提示(真实存在的类型/基类),例如:

 def foo(a: numeric):
    return ((a+1)*2)**4;

此外,我需要在集合类型参数中使用它,例如:

 from typing import Collection;
def foo(_in: Collection[numeric]):
    return ((_in[0]+_in[1])*2)**4;

原文由 Francesco Boi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 824
2 个回答

PEP 3141 为数字添加了抽象基类,因此您可以使用:

 from numbers import Number

def foo(a: Number) -> Number:
    ...

原文由 juanpa.arrivillaga 发布,翻译遵循 CC BY-SA 4.0 许可协议

typing 模块中没有通用数字类型,因此您必须使用 Union 创建这样的类型:

 from typing import Union

numeric = Union[int, float, complex]

...

要添加对 Numpy 的数字类型集合的支持,请将 np.number 添加到该联合。

 numeric = Union[int, float, complex, np.number]

原文由 blhsing 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题