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

如何用Python类型提示为函数返回值命名?

如何给Tuple类型提示添加语义标注?

Python标准的Tuple类型提示确实没法直接给每个元素附加语义标签,你说的Tuple[mean:float, median:float]这种写法目前不合法。不过有几种合规、实用且符合Python风格的解决方案:

1. 改用TypedDict(Python 3.8+)

如果可以接受把返回值从元组改成字典,TypedDict是最直接的方案——它能明确每个字段的含义和类型,IDE、mypy这类工具都能完美识别:

from typing import TypedDict
import numpy as np

class StatsResult(TypedDict):
    mean: float
    median: float

def basic_stats(data: list[float]) -> StatsResult:
    return {"mean": np.mean(data), "median": np.median(data)}

2. 使用数据类(Python 3.7+)

用dataclasses定义专门的结果类,既能保留类似元组的不可变性(设置frozen=True),又能清晰标注每个字段的语义,类型检查和IDE补全都没问题:

from dataclasses import dataclass
from typing import List
import numpy as np

@dataclass(frozen=True)
class StatsResult:
    mean: float
    median: float

def basic_stats(data: List[float]) -> StatsResult:
    return StatsResult(np.mean(data), np.median(data))

这也是Python社区推荐的语义化返回值写法,可读性和类型安全性拉满。

关于PEP提案的说明

目前没有被采纳的PEP专门解决Tuple元素的语义标注问题。Python类型系统的设计思路里,Tuple更适合表示异构但无明确语义的序列,而结构化、带语义的数据,官方更推荐用数据类或TypedDict来实现。

另外你提到的Tuple["mean", "median"]属于非正式的写法,虽然人能看懂,但类型检查工具会报错,别在生产代码里用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 06:42:26