Как набрать подсказку универсальный c цифра c введите Python? - PullRequest
3 голосов
/ 10 марта 2020

Простите, если этот вопрос уже задавался, но я не смог найти никакого связанного с ним ответа.

Рассмотрим функцию, которая принимает числовой тип в качестве входного параметра:

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

Это работает с целыми числами, числами с плавающей запятой и комплексными числами.

Существует ли тип basi c, чтобы я мог выполнить подсказку типа (реально существующего типа / базового класса), например:

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;

Ответы [ 2 ]

5 голосов
/ 10 марта 2020

PEP 3141 добавлены абстрактные базовые классы для чисел, чтобы вы могли использовать:

from numbers import Number

def foo(a: Number) -> Number:
    ...
0 голосов
/ 10 марта 2020

В модуле typing нет универсального типа c цифра c, поэтому вам придется создать такой тип с помощью Union:

from typing import Union

numeric = Union[int, float, complex]

...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...