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

Python 3.11中inspect.getargspec的等效替代函数是什么?

Python 3.11中inspect.getargspec的等效替代方案

inspect.getargspec()在Python 3.11中已被彻底移除,官方提供了两个主要的等效替代函数,可根据实际需求选择:

1. inspect.getfullargspec()

这是最接近原getargspec()功能的替代方案,兼容Python 3的所有参数类型(包括keyword-only参数),返回的对象结构与getargspec()高度相似,仅部分属性命名有调整。

原代码示例(Python 3.10及更早版本):

import inspect

def demo_func(a, b, *args, **kwargs):
    pass

argspec = inspect.getargspec(demo_func)
print(argspec.args)       # 输出: ['a', 'b']
print(argspec.varargs)    # 输出: 'args'
print(argspec.keywords)   # 输出: 'kwargs'

替换后的Python 3.11代码:

import inspect

def demo_func(a, b, *args, **kwargs):
    pass

full_argspec = inspect.getfullargspec(demo_func)
print(full_argspec.args)    # 输出: ['a', 'b']
print(full_argspec.varargs) # 输出: 'args'
print(full_argspec.varkw)   # 输出: 'kwargs'

注意:原getargspec()的keywords属性在getfullargspec()中对应为varkw。

2. inspect.signature()

如果需要处理更复杂的参数场景(比如函数注解、默认值、keyword-only参数的详细信息),推荐使用inspect.signature(),它返回一个Signature对象,提供更灵活的参数解析能力。

示例代码:

import inspect

def demo_func(a, b: str, *args, c=20, **kwargs):
    pass

sig = inspect.signature(demo_func)
# 获取所有参数名称
print(list(sig.parameters.keys()))  # 输出: ['a', 'b', 'args', 'c', 'kwargs']
# 获取参数注解
print(sig.parameters['b'].annotation)  # 输出: <class 'str'>
# 获取参数默认值
print(sig.parameters['c'].default)     # 输出: 20

getargspec()被移除的核心原因是它无法兼容Python 3引入的keyword-only参数等新特性,早在Python 3.0版本就被标记为废弃,最终在3.11中彻底移除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 21:12:41