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 signature
Funktion 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 str
Folgendes 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 len
an , sig.parameters
um auch die Anzahl der Argumente zu sehen diese Funktion erfordert:
print(len(params)) # 3
Jeder Eintrag in der params
Zuordnung ist tatsächlich ein Parameter
Objekt 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.x
Benutzer sind zwar inspect.getargspec
nicht veraltet, aber die Sprache wird bald lauten :-). Die Signature
Klasse ist nicht in der 2.x
Serie 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 getargspec
in Python 2 basiert, und der Wechsel zu signature
in 3
zu 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 getargspec
dies nicht tun:
from inspect import getfullargspec
def someMethod(self, arg1, kwarg1=None):
pass
args = getfullargspec(someMethod)
Wie bei getargspec
, getfullargspec
kehrt ein , NamedTuple
welche die Argumente enthält.
print(args)
FullArgSpec(args=['self', 'arg1', 'kwarg1'], varargs=None, varkw=None, defaults=(None,), kwonlyargs=[], kwonlydefaults=None, annotations={})
inspect
Standardbibliotheksmodul.