Python 类型提示:`def f(e: Union[np, tf])` 表示 `import numpy as np`?

问题描述 投票:0回答:1

目标:限制函数参数仅接受

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"]]
python python-typing type-parameter pep585
1个回答
0
投票

你需要使用类型检查吗?你可以这样断言

assert module == np or module == tf, f"{module.__name__} not numpy or tensorflow"

© www.soinside.com 2019 - 2024. All rights reserved.