На этот вопрос уже есть ответ здесь:
Есть ли способ получить имена параметров, которые принимает функция?
def foo(bar, buz):
pass
magical_way(foo) == ["bar", "buz"]
Используйте модуль inspect из стандартной библиотеки Python (самый чистый и надежный способ выполнения интроспекции).
В частности, 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']