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

