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

print allkeywordsof(thefunction) #allkeywordsof doesnt exist

[a、b、c]を与える

allkeywordsofのような機能はありますか?

中身は変えられませんが、thefunction

4

3 に答える 3

21

inspect.getargspecを探していると思います:

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']
于 2012-08-11T13:23:49.083 に答える
1

探しているものを正確に取得するために、次のことができます。

>>> 
>>> def funct(a=1,b=2,c=3):
...     pass
... 
>>> import inspect
>>> inspect.getargspec(funct)[0]
['a', 'b', 'c']
>>> 
于 2012-08-11T13:28:47.510 に答える
0

このようなものが欲しいですか:

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

>>> func.func_code.co_varnames[-len(func.func_defaults):]
('a', 'b', 'c')
于 2012-08-11T13:27:19.747 に答える