関数が取るパラメーター名を取得する方法はありますか?
def foo(bar, buz):
pass
magical_way(foo) == ["bar", "buz"]
Pythonの標準ライブラリの inspect モジュールを使用します(イントロスペクションを実行するための最もクリーンで最も堅実な方法)。
具体的には、 inspect.getargspec(f)
は、f
の引数の名前とデフォルト値を返します-名前だけが必要で、特殊な形式を気にしない場合*a
、**k
、
import inspect
def magical_way(f):
return inspect.getargspec(f)[0]
表現された要件を完全に満たします。
>>> 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']