相关疑难解决方法(0)

如何使用可选导入输入提示?

当使用可选导入时,包仅在函数内部导入,因为我希望它成为我包的可选依赖项,有没有办法将函数的返回类型提示为属于此可选的类之一依赖?

举一个简单的例子,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”

如何使模块成功执行并保留静态类型检查功能,同时还可以选择此导入?

python mypy python-typing

6
推荐指数
1
解决办法
474
查看次数

标签 统计

mypy ×1

python ×1

python-typing ×1