获取函数的关键字参数,Python

获取函数的关键字参数,Python,python,function,introspection,Python,Function,Introspection,这将给出[a,b,c] 有没有像allkeywordsof这样的函数 我无法更改内部的任何内容,功能我想您正在寻找: 屈服 import inspect def thefunction(a=1,b=2,c=3): pass argspec = inspect.getargspec(thefunction) print(argspec.args) 如果函数同时包含位置参数和关键字参数,则查找关键字参数的名称会稍微复杂一些,但不会太难: ['a', 'b', 'c'] 你想要这样的

这将给出[a,b,c]

有没有像allkeywordsof这样的函数


我无法更改内部的任何内容,
功能
我想您正在寻找:

屈服

import inspect

def thefunction(a=1,b=2,c=3):
    pass

argspec = inspect.getargspec(thefunction)
print(argspec.args)

如果函数同时包含位置参数和关键字参数,则查找关键字参数的名称会稍微复杂一些,但不会太难:

['a', 'b', 'c']

你想要这样的东西吗:

def thefunction(pos1, pos2, a=1,b=2,c=3, *args, **kwargs):
    pass

argspec = inspect.getargspec(thefunction)

print(argspec)
# ArgSpec(args=['pos1', 'pos2', 'a', 'b', 'c'], varargs='args', keywords='kwargs', defaults=(1, 2, 3))

print(argspec.args)
# ['pos1', 'pos2', 'a', 'b', 'c']

print(argspec.args[-len(argspec.defaults):])
# ['a', 'b', 'c']

为了得到你想要的东西,你可以做以下的事情

>>> def func(x,y,z,a=1,b=2,c=3):
    pass

>>> func.func_code.co_varnames[-len(func.func_defaults):]
('a', 'b', 'c')

我该如何制作的可能副本的副本只给我agrs
inspect.getargspec(函数).args
argspec.args[-len(argspec.defaults):]
这应该被接受,因为它回答了问题。不尊重OP或Ashwini,但我同意这应该是未来参考的公认答案…
getargspec
has,使用
getfullargspec
代替。co_varnames是一个错误的决定,它还包含非关键字参数,主题启动者只需要关键字arguments@RostyslavDzinko是的,你是对的,但问题是
inspect.getargspec()
还返回非关键字参数。@user1513192,此答案无法解决您描述的问题。如果它符合你的需要-重新描述你的问题(我上面的评论说明了原因)@jamylak使用这个,因为我还没有学会
inspect
,现在肯定会学会的。:)在Python3中,func_code已重命名为
\uu code
>>> def func(x,y,z,a=1,b=2,c=3):
    pass

>>> func.func_code.co_varnames[-len(func.func_defaults):]
('a', 'b', 'c')
>>> 
>>> def funct(a=1,b=2,c=3):
...     pass
... 
>>> import inspect
>>> inspect.getargspec(funct)[0]
['a', 'b', 'c']
>>>