python参数类型提示支持嵌套类型信息吗?

jav*_*dba 2 python types

我有一个逻辑如下的函数:

 def computeProbability(
     x_i: np.array(np.int32), 
     colProbabilities: list(dict(string,np.float32))
 ) -> list(double):
     return []  # placeholder
Run Code Online (Sandbox Code Playgroud)

我的猜测是,这里可以实现的最严格的类型检查是:

def computeProbability(x_i: np.array, colProbabilities: list) -> list:
     return []  # placeholder
Run Code Online (Sandbox Code Playgroud)

这个假设正确吗?

jav*_*dba 8

实际上可以提供深层类型信息。type hints刚刚从 python 3.5+发现。这些对于 IDE 来说非常有用:例如你可以这样做

ListOfDict = List[Dict[str, float]]
Run Code Online (Sandbox Code Playgroud)

然后声明一个方法,返回带有字符串键和浮点值的字典列表

from typing import List, Dict
Vector = List[float]
ListOfDict = List[Dict[str, float]]
Run Code Online (Sandbox Code Playgroud)

使用这个:

def computeLikelihood(x_i_vals: Vector, allProbs: ListOfDict):
Run Code Online (Sandbox Code Playgroud)

现在我们可以在IDE中获取方法提示了!

在此输入图像描述

这是开发嵌套数据结构的一大胜利!