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

如何为返回csv.reader结果的Python函数正确添加类型注解?

为CSV读取器函数添加类型注解的方案

方案一:使用抽象可迭代类型(推荐,无内部依赖)

这种方式不依赖csv模块的内部实现细节,通过描述返回值的行为来标注类型,符合Python的鸭子类型理念:

import csv
from typing import Iterable, IO

def create_my_csv(fh: IO[str]) -> Iterable[list[str]]:
    return csv.reader(fh, delimiter=";", strict=True)
  • IO[str]:标注参数fh是文本模式打开的文件对象,完全符合csv.reader的输入要求
  • Iterable[list[str]]:csv.reader返回的对象是可迭代结构,每次迭代会生成一个由字符串组成的列表,这个注解准确描述了它的核心行为

方案二:直接引用csv.reader的返回类型(Python 3.10+)

如果想要更直接地复用csv.reader的返回类型,可以用ReturnType和typeof来避免显式书写内部的_csv.Reader:

import csv
from typing import ReturnType, IO

# 定义类型别名,获取csv.reader的返回类型
CSVReader = ReturnType[typeof(csv.reader)]

def create_my_csv(fh: IO[str]) -> CSVReader:
    return csv.reader(fh, delimiter=";", strict=True)

这个方式底层仍指向_csv.Reader,但代码中没有显式依赖内部模块,满足你不想直接写_csv.Reader的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:49:55