bkh*_*tun 8 python type-hinting
假设我们有一个函数,例如reduce,它接受回调,例如combiner。如果我有一个示例回调函数 ,exampleReducer我希望避免手动编写回调的类型,而使用 的类型exampleReducer。
exampleReducer在 C++ 中,我可以使用以下方法获取类型decltype:
#include <iostream>
#include <vector>
using namespace std;;
float exampleReducer(float x, float y) {
return x+y;
}
auto reduce(decltype(exampleReducer) reducer, vector<float> numbers) {
auto result = numbers[0];
for (auto x: numbers)
result = reducer(result, x);
return result;
};
int main() {
std::cout << reduce([](float x, float y) {return x/y;}, {1,2,3,4,5});
}
Run Code Online (Sandbox Code Playgroud)
在打字稿中,我可以使用typeof:
const exampleReducer = (x: number, y: number) => 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]))
Run Code Online (Sandbox Code Playgroud)
我知道 python 3.11 将在模块reveal_type中添加一个函数typing- 已经在 中可用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]))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
392 次 |
| 最近记录: |