web-dev-qa-db-ja.com

Python関数の引数名のリスト

関数が取るパラメーター名を取得する方法はありますか?

def foo(bar, buz):
    pass

magical_way(foo) == ["bar", "buz"]
33
Bemmu

Pythonの標準ライブラリの inspect モジュールを使用します(イントロスペクションを実行するための最もクリーンで最も堅実な方法)。

具体的には、 inspect.getargspec(f)は、fの引数の名前とデフォルト値を返します-名前だけが必要で、特殊な形式を気にしない場合*a**k

import inspect

def magical_way(f):
    return inspect.getargspec(f)[0]

表現された要件を完全に満たします。

51
Alex Martelli
>>> import inspect
>>> def foo(bar, buz):
...     pass
... 
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'buz'], varargs=None, keywords=None, defaults=None)
>>> def magical_way(func):
...     return inspect.getargspec(func).args
... 
>>> magical_way(foo)
['bar', 'buz']
12
John La Rooy