如何在可选键入

时间:2016-02-10 23:51:22

标签: python numpy python-3.5 typing

假设我想创建一个函数,它将lambda函数(Callable)作为参数,其中lambda函数将向量作为输入(定义为numpy数组或numpy矩阵)并返回一个新向量。 如何使用numpy类型声明Callable的类型签名?

我最初的尝试看起来像这样:

def some_func(calc_new_vector: Callable[[np.array], np.array], ...other-params...) -> SomeType:
    ...do stuff...
    ...return...

但是,这会在运行解释器时导致错误:

TypeError: Callable[[arg, ...], result]: each arg must be a type. Got <built-in function array>.

1 个答案:

答案 0 :(得分:15)

令人困惑的是,np.array是一个函数,可用于创建numpy数组。它不是创建的数组的实际type

类型为np.ndarray

因此,请将np.array替换为np.ndarray。这应该可以解决问题。