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

Python 3如何实现类似C语言typedef定义函数类型的功能?

Python 3实现函数类型别名(类似C语言typedef)的方法

Python完全支持给函数类型定义别名,和C语言的函数指针typedef作用一致,方便复用函数类型签名、提升类型提示可读性。

基础实现

Python 3.10及以上版本

可以用TypeAlias显式标注类型别名,语义更清晰:

from typing import Any, Callable, TypeAlias, Optional

# 定义CasterFunc为 接收1个Any类型参数、返回Any类型的函数 类型别名
CasterFunc: TypeAlias = Callable[[Any], Any]

Python 3.9及更早版本

不需要额外导入TypeAlias,直接赋值即可,静态类型检查工具(mypy、pyright等)可以正常识别:

from typing import Any, Callable, Optional

CasterFunc = Callable[[Any], Any]

使用示例

定义完别名后,你原来的函数可以直接替换类型声明:

def map(item: Any, ctx: Optional[Any] = None, caster: CasterFunc = lambda x: x):
    # 函数原有逻辑
    pass

补充说明

  • 你可以根据实际业务调整函数签名的参数、返回值类型,比如需要定义接收int、返回str的转换器类型,直接修改为CasterFunc: TypeAlias = Callable[[int], str]即可。
  • 和C语言的typedef类似,该类型别名主要用于静态类型校验,Python运行时不会做强制类型检查,如果需要运行时校验可以额外添加类型判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 02:36:05