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

TypeScript中Parameters工具类的Python等价实现方法

在Python中实现TypeScript风格的Parameters类型提取功能

TypeScript的Parameters工具类可以直接提取函数的参数类型并复用,在Python中可以通过**typing.ParamSpec**(Python 3.10+ 支持)实现相同的静态类型复用效果,无需重复声明参数类型。

基础实现示例

from typing import ParamSpec

def sum(a: int, b: int) -> int:
    return a + b

# 从sum函数中提取参数类型
SumParams = ParamSpec('SumParams').from_function(sum)

# 复用提取到的参数类型定义subtract
def subtract(*args: SumParams.args, **kwargs: SumParams.kwargs) -> int:
    return args[0] - args[1]

通用化复用方案

如果需要批量生成参数结构一致的函数,可以结合TypeVar和Callable封装通用逻辑:

from typing import ParamSpec, TypeVar, Callable

# 定义通用参数规格和返回值类型变量
P = ParamSpec('P')
R = TypeVar('R')

def create_opposite_calculator(func: Callable[P, R]) -> Callable[P, int]:
    """生成与输入函数参数一致、执行减法运算的函数"""
    def wrapper(*args: P.args, **kwargs: P.kwargs) -> int:
        return args[0] - args[1]
    return wrapper

# 定义原函数
def sum(a: int, b: int) -> int:
    return a + b

# 复用sum的参数类型创建subtract
subtract = create_opposite_calculator(sum)

注意事项

  • ParamSpec仅支持Python 3.10及以上版本,且需要配合静态类型检查工具(如mypy、pyright)才能发挥类型约束的作用;
  • 若使用低于3.10的Python版本,可通过inspect模块动态获取参数信息,但无法实现静态类型检查层面的类型复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 21:48:20