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

Python新手:如何实现类似JS的获取函数参数数量与名称功能?

用Python实现获取函数参数数量与名称的功能

嘿,作为Python新手,我来帮你搞定这个问题!你在JavaScript里实现的是获取函数的参数个数和参数名称,在Python里我们不用额外安装第三方库,用内置工具就能轻松实现~

先回顾下你的JavaScript代码:

function func(param1, param2) {} 
console.log(func.length); // 2 
var getParamNames = require('get-parameter-names'); 
console.log(getParamNames(func)); // ['param1', 'param2']

下面分两种需求来给你讲Python的实现方式:

1. 获取函数的参数数量

Python里有两种常用方式:

方式一:直接访问函数的内置属性

每个函数都自带__code__.co_argcount属性,它会返回函数的位置参数总数(包括带默认值的位置参数):

def func(param1, param2):
    pass

print(func.__code__.co_argcount)  # 输出:2

方式二:用inspect模块(更灵活,支持复杂函数)

如果你的函数包含可变参数(比如*args)、关键字参数(**kwargs)或者默认参数,用inspect模块能更准确地获取所有参数的数量:

import inspect

def func(param1, param2):
    pass

# 创建函数签名对象
sig = inspect.signature(func)
# 获取参数数量
print(len(sig.parameters))  # 输出:2

2. 获取函数的参数名称

同样推荐用inspect模块,它能清晰返回所有参数的名称列表:

方式一:用inspect.getfullargspec

这个方法会返回一个包含参数信息的对象,其中args属性就是位置参数的名称列表:

import inspect

def func(param1, param2):
    pass

args_info = inspect.getfullargspec(func)
print(args_info.args)  # 输出:['param1', 'param2']

方式二:用inspect.signature

通过函数签名对象的parameters属性,我们可以拿到所有参数的名称:

import inspect

def func(param1, param2):
    pass

sig = inspect.signature(func)
# 提取参数名称并转为列表
param_names = list(sig.parameters.keys())
print(param_names)  # 输出:['param1', 'param2']

额外补充:处理复杂函数

如果你的函数包含默认参数、可变参数这类复杂情况,inspect模块也能完美处理,比如:

import inspect

def complex_func(a, b=10, *args, **kwargs):
    pass

sig = inspect.signature(complex_func)
print(len(sig.parameters))  # 输出:4
print(list(sig.parameters.keys()))  # 输出:['a', 'b', 'args', 'kwargs']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:12:28