Vous pouvez utiliser inspect.getargspec()
pour voir quels arguments sont acceptés et toutes les valeurs par défaut pour les arguments de mot-clé.
Démo:
>>> def foo(bar, baz, spam='eggs', **kw): pass
...
>>> import inspect
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'baz', 'spam'], varargs=None, keywords='kw', defaults=('eggs',))
>>> inspect.getargspec(foo).args
['bar', 'baz', 'spam']
En Python 3, vous voulez utiliser inspect.getfullargspec()
comme cette méthode prend en charge les nouvelles fonctionnalités de l'argument de la fonction Python 3:
>>> def foo(bar: str, baz: list, spam: str = 'eggs', *, monty: str = 'python', **kw) -> None: pass
...
>>> import inspect
>>> inspect.getfullargspec(foo)
FullArgSpec(args=['bar', 'baz', 'spam'], varargs=None, varkw='kw', defaults=('eggs',), kwonlyargs=['monty'], kwonlydefaults={'monty': 'python'}, annotations={'baz': <class 'list'>, 'return': None, 'spam': <class 'str'>, 'monty': <class 'str'>, 'bar': <class 'str'>})
inspect.getargspec()
devrait être considéré comme dépréciée en Python 3.
Python 3.4 ajoute le inspect.Signature()
object:
>>> inspect.signature(foo)
<inspect.Signature object at 0x100bda588>
>>> str(inspect.signature(foo))
"(bar:str, baz:list, spam:str='eggs', *, monty:str='python', **kw) -> None"
>>> inspect.signature(foo).parameters
mappingproxy(OrderedDict([('bar', <Parameter at 0x100bd67c8 'bar'>), ('baz', <Parameter at 0x100bd6ea8 'baz'>), ('spam', <Parameter at 0x100bd69f8 'spam'>), ('monty', <Parameter at 0x100bd6c28 'monty'>), ('kw', <Parameter at 0x100bd6548 'kw'>)]))
et beaucoup d'autres options intéressantes pour jouer avec des signatures.
Regardez ['inspect.getargspec'] (https://docs.python.org/2/library/inspect.html#inspect.getargspec) et d'autres fonctions dans ce module. – BrenBarn
Je comprends qu'il y a une copie de ceci, mais je ne l'ai tout simplement pas trouvée parce que je ne savais pas ce qu'est une signature. Je peux imaginer qu'il y a plus de gens avec le même déficit, alors je proposerais de laisser cette question ouverte aux futurs lecteurs. – kramer65
@ kramer65: les questions en double ne sont pas supprimées pour les raisons que vous avez mentionnées, essentiellement les questions en double sont conservées pour devenir des appâts de liens pour le moteur de recherche pour les personnes qui utilisent différents mots clés de recherche que la réponse canonique. –