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

Python函数定义中函数名后的方括号[]是什么语法?该如何使用?

Python 3.12泛型函数的类型参数语法解析

问题

观看Python特性相关视频时,我遇到了如下代码片段:

def compose[_First, _Second, _Third](
    first: Callable[[_First], _Second],
    second: Callable[[_Second], _Third],
) -> Callable[[_First], _Third]:
    return lambda x: second(first(x))

我对函数名后方括号中的语法(即[_First, _Second, _Third])感到好奇,想了解该语法的名称,以及在Python中的使用时机和方法。

解答

语法名称

该语法叫做类型参数语法(Type Parameter Syntax),是Python定义泛型函数的新语法形式。

引入版本

它在Python 3.12版本中正式引入,由PEP 695这份官方规范定义。

使用时机与方法

这种语法专为泛型函数设计——泛型函数可以处理多种不同类型的输入,同时能通过类型注解保证类型安全。比如示例中的compose函数,它串联两个转换函数:第一个将_First类型转为_Second,第二个将_Second转为_Third,最终返回的函数能直接完成_First到_Third的转换。

相比之前用typing.TypeVar声明类型变量的写法,这种语法更简洁直观:

  • 在函数名后用方括号[]包裹类型参数(如_First、_Second),这些参数是类型的“占位符”
  • 在函数的参数类型注解、返回值注解中,直接用这些占位符明确类型之间的关联关系
  • 调用函数时,Python会自动推断类型参数的具体类型,也可以显式指定(例如compose[int, str, bool](func1, func2))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:04:53