python 输入 : result depending on arguments

标签 python python-typing typing python-3.10

我有一个函数:

T = typing.TypeVar('T', str, list[str])
def f(arg: T) -> T:
    ...

AFAICS 这意味着以下内容有效:

  • f(str)str
  • f(list[str])list[str]

或者换句话说,当给定一个字符串时,返回一个字符串;当给出字符串列表时,返回字符串列表。

现在我想表达一个函数的类型,当给定一个字符串时返回一个bool,如果给定一个字符串列表返回一个list[bool].

我该怎么做?

最佳答案

感谢@koyeung 评论中的提示

@typing.overload
def f(arg: str) -> bool:
    ...

@typing.overload
def f(arg: list[str]) -> list[bool]:
    ...

def f(arg):
    if isinstance(arg, list):
        return ...  # implementation for list
    ... # implementation for str

关于python 输入 : result depending on arguments,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74188536/

相关文章:

python - Python 子类的类型提示

python - PyCharm 类型检查没有按预期工作

python - Python 中用于 TR 的正则表达式

python - 返回类实例的抽象类方法的键入提示

python - 在旧版本的 Python 上使用通过 ParamSpec 键入的 Python 代码

typescript - 如何获得没有具体类的深度嵌套命名空间的别名?

typescript - 如何使用 Typescript 从数组动态构建枚举

python - 设置 `torch.backends.cudnn.benchmark = True`还是不设置?

python - 在 django 中使用无效数据进行 View 测试时出现断言错误

python - Tkinter - 循环更新 ListBox