You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PEP-484风格下,如何让Python函数返回类型依赖参数字面量?

基于参数字面量值确定Python函数返回类型的方法

要让函数返回类型根据参数的字面量值动态确定,你可以结合**函数重载(@overload)和字面量类型(Literal)**来实现,完全符合PEP-484规范。

具体实现步骤

  1. 导入所需的类型工具:
from typing import overload, Literal, list, int
  1. 用@overload定义两种参数字面量对应的返回类型:
@overload
def add_one(x: list[int], return_result: Literal[True]) -> list[int]:
    ...

@overload
def add_one(x: list[int], return_result: Literal[False]) -> None:
    ...
  1. 编写实际的函数实现,参数标注用普通bool,返回类型可统一标注为list[int] | None(或留空让类型检查器自动推断):
def add_one(x: list[int], return_result: bool) -> list[int] | None:
    x[0] += 1
    if return_result:
        return x

效果说明

  • 当传入字面量True时,类型检查器(如mypy、pyright)会明确推断返回类型为list[int]
  • 当传入字面量False时,会推断返回类型为None
  • 如果传入的是一个普通bool变量(非字面量),类型检查器仍会返回list[int] | None,这符合逻辑——因为变量的值在运行前无法确定

示例用法

my_list = [1, 2, 3]
# 类型检查器识别返回值为list[int]
modified_list = add_one(my_list, return_result=True)
# 类型检查器识别返回值为None
add_one(my_list, return_result=False)

内容的提问来源于stack exchange,提问作者BeeOnRope

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 04:10:32