我正在开发一个支持 Python 3.10+ 的库,在很多情况下,我发现自己导入库只是因为我需要一个用于类型提示的类。
这很常见,例如:
import pandas as pd
# Prev code where `pd` is never used
def myfunc() -> pd.DataFrame:
# Definition of my func where `pd` is never used
# Rest of code where `pd` is never used
我想实现使用类型提示的方法来最大程度地减少通过导入库和/或类而增加的运行时开销。
我正在考虑接下来的选择:
from __future__ import annotations
并且不添加导入。types
模块,导入我将用于类型提示的特定类,例如 from pandas import DataFrame as pandasDF
,然后在需要时使用此模块。from pandas import DataFrame
,我将在其中使用类型提示。问题是:设置用于类型提示的类的最优化方法是什么(就添加的额外运行时间而言)?
我当前正在导入包含所需类的模块。
实际上有一个内置功能:typing.TYPE_CHECKING
这只是一个布尔值,在类型检查时为 True,在运行时为 False。如果您的导入仅在类型检查时需要,您可以说:
import typing
if typing.TYPE_CHECKING:
import pandas as pd
def myfunc() -> pd.DataFrame:
pass
希望这有帮助!