gpt4 book ai didi

Python 输入 - 有没有办法避免导入可选类型(如果它是 None 的话)?

转载 作者:行者123 更新时间:2023-12-01 11:10:57 26 4
gpt4 key购买 nike

假设我们有一个这样的函数定义:

def f(*, model: Optional[Type[pydantic.BaseModel]] = None)

所以该函数不需要 pydantic安装,直到您通过 model .现在假设我们要将函数打包到 pypi 包中。我的问题是是否有办法避免带来 pydantic进入包依赖只是为了类型检查?

最佳答案

我试着关注 dspenser's advice ,但我发现 mypy 仍然给我 Name 'pydantic' is not defined错误。然后我发现了这个chapter in the docs它似乎也适用于我的情况:

from typing import TYPE_CHECKING

if TYPE_CHECKING:
import pydantic

您可以在 __future__.annotations 中使用普通类(而不是字符串文字) ( python 3.8.1):

from __future__ import annotations

from typing import TYPE_CHECKING, Optional, Type

if TYPE_CHECKING:
import pydantic


def f(*, model: Optional[Type[pydantic.BaseModel]] = None):
pass

如果由于某种原因你不能使用 __future__.annotations ,例如你在 python < 3.7 上,使用来自 dspenser's solution 的字符串文字输入.

关于Python 输入 - 有没有办法避免导入可选类型(如果它是 None 的话)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60632275/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com