python - 使用键入 类 手动执行键入约束

python - Manually execute typing constraints using typing classes

我想验证一些参数的类型,最好使用 typing 定义

例如:

from typing import List, Dict

def func(param1, param2):
     assert param1 is of type Dict[str, int] # How can this be done?
     assert param2 is of type List[Any] # How can this be done?

非复杂类型很容易。 assert isinstance(param1, str)

问题明显简化了,说清楚了

根据 typing,这只是为了让类型提示更具可读性,Python.

实际上并没有强制执行类型检查

由于列表和字典可能包含任意类型(对于字典,它们必须是可哈希的 - 但仍然 "almost arbitrary"),唯一的方法是遍历集合并检查每个项目。

assert isinstance(param1, dict)
for k, v in param1.items():
    assert isinstance(k, str)
    assert isinstance(v, int)

您可以使用 enforce or typeguard 等库在运行时强制执行类型注释。