Python高阶函数的Callable参数如何正确标注类型提示
问题原因分析
- 你当前写的
Callable[[], ]存在两个错误:- 第一对空方括号
[]表示该函数不接收任何入参,但你的代码中会把int类型的列表元素el传给f,入参类型不匹配 - 没有指定
f的返回值类型,mypy会默认推断返回值为int,因此会报str和int相加的类型不兼容错误
- 第一对空方括号
正确标注写法
f的类型应该写为Callable[[int], str]:
- 方括号内的
int表示函数f接收1个int类型的入参 - 后面的
str表示函数f的返回值为字符串类型,符合你后续拼接字符串的逻辑
修正后完整代码
from typing import Callable def g(L: list[int], f: Callable[[int], str]) -> str: result = "" for el in L: result += f(el) return result
内容的提问来源于stack exchange,提问作者Emilia Delizia
相关产品推荐
相关产品推荐

