目标:限制函数参数仅接受
numpy
或 tensorflow
模块。
Literal
类型(PEP586):
Literal["np", "tf"]
globals()
查找符号。这会工作得相当好,尽管显然会跳过模块类型检查。
有什么方法可以接受 str 表示或模块本身吗? - 传入模块本身会出现此错误:
预期类型
,却得到了Literal["np", "tf"]
Union[__init__.py, __init__.py]
但我不知道如何创建
Union[__init__.py, __init__.py]
,例如,这不起作用:
Union[Union[__init__.py, __init__.py], Literal["np", "tf"]]
你需要使用类型检查吗?你可以这样断言
assert module == np or module == tf, f"{module.__name__} not numpy or tensorflow"