web-dev-qa-db-fra.com

Python liste les noms des arguments de fonction

Existe-t-il un moyen d'obtenir les noms de paramètres d'une fonction?

def foo(bar, buz):
    pass

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

Utilisez le module inspect de la bibliothèque standard de Python (le moyen le plus propre et le plus solide pour effectuer une introspection).

Plus précisément, inspect.getargspec(f) renvoie les noms et les valeurs par défaut des arguments de f - si vous ne voulez que les noms et ne vous souciez pas des formes spéciales *a, **k,

import inspect

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

répond complètement à vos exigences exprimées.

55
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