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
相关产品推荐
相关产品推荐

