当使用可选导入时,即包仅在函数内部导入,因为我希望它成为我包的可选依赖项,有没有办法将函数的返回类型提示为属于此可选的类之一依赖?
举一个简单的例子,pandas作为一个可选的依赖:
def my_func() -> pd.DataFrame:
import pandas as pd
return pd.DataFrame()
df = my_func()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,由于import语句在 内my_func,因此该代码将毫不奇怪地引发:
NameError: 名称 'pd' 未定义
如果改为使用字符串文字类型提示,即:
def my_func() -> 'pd.DataFrame':
import pandas as pd
return pd.DataFrame()
df = my_func()
Run Code Online (Sandbox Code Playgroud)
该模块现在可以毫无问题地执行,但mypy会抱怨:
错误:未定义名称“pd”
如何使模块成功执行并保留静态类型检查功能,同时还可以选择此导入?