Die zuvor akzeptierte Antwort ist ab dem Python 3.0. Anstatt zu verwenden inspect.getargspec, sollten Sie sich jetzt für das entscheidenSignature Klasse entscheiden, die sie ersetzt hat.
Das Erstellen einer Signatur für die Funktion ist über die signatureFunktion einfach :
from inspect import signature
def someMethod(self, arg1, kwarg1=None):
pass
sig = signature(someMethod)
Jetzt können Sie entweder die Parameter schnell anzeigen, indem Sie strFolgendes eingeben:
str(sig) # returns: '(self, arg1, kwarg1=None)'
oder Sie können auch eine Zuordnung von Attributnamen zu Parameterobjekten über erhalten sig.parameters.
params = sig.parameters
print(params['kwarg1']) # prints: kwarg1=20
Darüber hinaus können Sie rufen lenan , sig.parametersum auch die Anzahl der Argumente zu sehen diese Funktion erfordert:
print(len(params)) # 3
Jeder Eintrag in der paramsZuordnung ist tatsächlich ein ParameterObjekt mit weiteren Attributen, die Ihnen das Leben erleichtern. Das Abrufen eines Parameters und das Anzeigen seines Standardwerts können jetzt problemlos durchgeführt werden mit:
kwarg1 = params['kwarg1']
kwarg1.default # returns: None
ähnlich für den Rest der Objekte in parameters.
Python- 2.xBenutzer sind zwar inspect.getargspec nicht veraltet, aber die Sprache wird bald lauten :-). Die SignatureKlasse ist nicht in der 2.xSerie verfügbar und wird es auch nicht sein. Sie müssen also noch mit arbeiten inspect.getargspec.
Wenn Sie für den Übergang zwischen Python 2 und 3 Code haben, der auf der Schnittstelle von getargspecin Python 2 basiert, und der Wechsel zu signaturein 3zu schwierig ist, haben Sie die wertvolle Option, ihn zu verwenden inspect.getfullargspec. Es bietet eine ähnliche Schnittstelle wie getargspec(ein einzelnes aufrufbares Argument), um die Argumente einer Funktion zu erfassen und gleichzeitig einige zusätzliche Fälle zu behandeln, die getargspecdies nicht tun:
from inspect import getfullargspec
def someMethod(self, arg1, kwarg1=None):
pass
args = getfullargspec(someMethod)
Wie bei getargspec, getfullargspeckehrt ein , NamedTuplewelche die Argumente enthält.
print(args)
FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})
inspectStandardbibliotheksmodul.