Существует ли на Python эквивалент Typescript `typeof` или C++ `decltype`?Python

Программы на Python
Anonymous
Существует ли на Python эквивалент Typescript `typeof` или C++ `decltype`?

Сообщение Anonymous »

Предположим, у нас есть функция, например, сокращение, которая принимает обратный вызов, например, объединитель. Если у меня есть пример функции обратного вызова exampleReducer, я бы хотел избежать необходимости писать тип обратного вызова вручную и использовать вместо этого тип exampleReducer.
В C++ я могу получить тип exampleReducer, используя decltype:
#include
#include
using namespace std;;

float exampleReducer(float x, float y) {
return x+y;
}

auto reduce(decltype(exampleReducer) reducer, vector numbers) {
auto result = numbers[0];
for (auto x: numbers)
result = reducer(result, x);
return result;
};

int main() {
std::cout x+y;

const reduce = (reducer: typeof exampleReducer, numbers: number[]) => {
let result = numbers[0];
numbers.forEach((n) => { result = reducer(result, n);})
return result
}

console.log(reduce((x, y) => x/y, [1,2,3,4,5]))

Я знаю, что в Python 3.11 к модулю typing будет добавлена ​​функция show_type, которая уже доступна в typing-extensions, но в документации указано :

Когда средство проверки статического типа обнаруживает вызов этой функции, оно выдает диагностику с указанием типа аргумента.

Похоже, что средства проверки типов могут определить тип, но только для целей отладки...
Существует ли эквивалент Python, который позволил бы использовать тип exampleReducer как аннотацию типа?
def exampleReducer(x: float, y: float):
return x+y;

def reduce(reducer: ???what goes here??? exampleReducer, numbers: list[float]):
result = numbers[0];
for n in numbers:
result = reducer(result, n)
return result

print(reduce(lambda x, y: x/y, [1,2,3,4,5]))


Подробнее здесь: https://stackoverflow.com/questions/739 ... c-decltype

Вернуться в «Python»