我如何才能找到一个Python函数的参数的数量?我需要知道它有多少普通参数和多少命名参数。

例子:

def someMethod(self, arg1, kwarg1=None):
    pass

这个方法有2个参数和1个命名参数。


当前回答

import inspect
inspect.getargspec(someMethod)

查看inspect模块

其他回答

someMethod.func_code.co_argcount

或者,如果当前函数名未确定:

import sys

sys._getframe().func_code.co_argcount

你可以通过(将"function"替换为你的函数名)获得参数的数量:

function.__code__.co_argcount ## 2

参数的名称为:

function.__code__.co_varnames ## ('a', 'b')

func.__code__。co_argcount给出了在*args之前任何参数的个数

函数。__kwdefaults__给你一个字典的关键字参数AFTER *args

func.__code__。Co_kwonlyargcount等于len(funct .__kwdefaults__)

函数。__defaults__提供了出现在*args之前的可选参数值

这里有一个简单的例子:

>>> def a(b, c, d, e, f=1, g=3, h=None, *i, j=2, k=3, **L):
    pass

>>> a.__code__.co_argcount
7
>>> a.__defaults__
(1, 3, None)
>>> len(a.__defaults__)
3
>>> 
>>> 
>>> a.__kwdefaults__
{'j': 2, 'k': 3}
>>> len(a.__kwdefaults__)
2
>>> a.__code__.co_kwonlyargcount
2

Dimitris Fasarakis Hilliard的公认答案建议以字符串格式获取参数,但我认为在解析这个字符串时可能会犯错误,因此我直接使用inspect模块创建了一个参数列表

import inspect
def my_function(a,b,c):
    #some code
    pass

result=list(inspect.signature(my_function).parameters.keys())
print(result)
['a','b','c']

inspect.getargspec ()

Get the names and default values of a function’s arguments. A tuple of four things is returned: (args, varargs, varkw, defaults). args is a list of the argument names (it may contain nested lists). varargs and varkw are the names of the * and ** arguments or None. defaults is a tuple of default argument values or None if there are no default arguments; if this tuple has n elements, they correspond to the last n elements listed in args. Changed in version 2.6: Returns a named tuple ArgSpec(args, varargs, keywords, defaults).

看到can-you-list-the-keyword-arguments-a-python-function-receives。