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

如何自动为Python函数f2的参数x标注f1的返回类型?

问题

现有以下Python函数:

def f1(a:int, b:int):
    return (a,b)

def f2(x):
    a, b = x
    return a

我想自动给f2的参数x加上类型提示,让它和f1的返回类型保持一致(也就是tuple[int, int])。目前我是手动标注的:

from typing import Tuple

def f1(a:int, b:int):
    return (a,b)

def f2(x:Tuple[int,int]):
    a, b = x
    return a

但每次修改f1的返回类型时,必须同步修改f2的类型提示(比如把f1的b改成str类型,f2的x就得改成Tuple[int, str])。有没有更便捷的实现方式?比如类似下面这种写法:

def f1(a:int, b:int):
    return (a,b)

def f2(x:output_type_of[f1]):
    return x[1]
解决方案

当然有,下面几种方法都能实现自动关联,不用手动同步修改:

1. Python 3.10+ 用 ReturnType + typeof

Python 3.10及以上版本内置了ReturnType,可以直接获取函数的返回类型:

from typing import ReturnType

def f1(a:int, b:int):
    return (a,b)

def f2(x: ReturnType[typeof(f1)]):
    a, b = x
    return a

这样只要f1的返回类型变了,f2的参数类型会自动跟着更新。

2. 兼容低版本用 typing_extensions.ReturnType

如果你的Python版本低于3.10,先安装typing_extensions包,然后用它提供的ReturnType:

from typing_extensions import ReturnType

def f1(a:int, b:int):
    return (a,b)

def f2(x: ReturnType[typeof(f1)]):
    a, b = x
    return a

3. 自定义类型别名(兼容性最好)

也可以先给f1的返回类型定义一个别名,然后在f2里直接用这个别名:

from typing import Tuple

F1Return = Tuple[int, int]

def f1(a:int, b:int) -> F1Return:
    return (a,b)

def f2(x: F1Return):
    a, b = x
    return a

这种方式所有支持类型提示的Python版本都能用,修改的时候只需要更新F1Return的定义就行,不用改两个地方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 22:07:28