Véase Funktionsdefinitionen in der Sprachreferenz.
Wenn das Formular *identifier
ist vorhanden, wird er mit einem Tupel initialisiert initialisiert, das alle Parameter, standardmäßig mit dem leeren Tupel. Wenn das Formular **identifier
ist vorhanden, wird es mit einem neuen Wörterbuch initialisiert, das jedes überschüssige Schlüsselwortargumente, standardmäßig wird ein neues leeres Wörterbuch.
Siehe auch Funktionsaufrufe .
Vorausgesetzt, man weiß, was Positions- und Schlüsselwortargumente sind, hier einige Beispiele:
Beispiel 1:
# Excess keyword argument (python 2) example:
def foo(a, b, c, **args):
print "a = %s" % (a,)
print "b = %s" % (b,)
print "c = %s" % (c,)
print args
foo(a="testa", d="excess", c="testc", b="testb", k="another_excess")
Wie Sie im obigen Beispiel sehen können, haben wir nur Parameter a, b, c
in der Signatur des foo
Funktion. Da d
y k
nicht vorhanden sind, werden sie in das args-Wörterbuch aufgenommen. Die Ausgabe des Programms ist:
a = testa
b = testb
c = testc
{'k': 'another_excess', 'd': 'excess'}
Beispiel 2:
# Excess positional argument (python 2) example:
def foo(a, b, c, *args):
print "a = %s" % (a,)
print "b = %s" % (b,)
print "c = %s" % (c,)
print args
foo("testa", "testb", "testc", "excess", "another_excess")
Da wir hier Positionsargumente testen, müssen die überschüssigen Argumente am Ende stehen, und *args
packt sie in ein Tupel, so dass die Ausgabe dieses Programms lautet:
a = testa
b = testb
c = testc
('excess', 'another_excess')
Sie können auch ein Wörterbuch oder ein Tupel in Argumente einer Funktion entpacken:
def foo(a,b,c,**args):
print "a=%s" % (a,)
print "b=%s" % (b,)
print "c=%s" % (c,)
print "args=%s" % (args,)
argdict = dict(a="testa", b="testb", c="testc", excessarg="string")
foo(**argdict)
Drucke:
a=testa
b=testb
c=testc
args={'excessarg': 'string'}
Y
def foo(a,b,c,*args):
print "a=%s" % (a,)
print "b=%s" % (b,)
print "c=%s" % (c,)
print "args=%s" % (args,)
argtuple = ("testa","testb","testc","excess")
foo(*argtuple)
Drucke:
a=testa
b=testb
c=testc
args=('excess',)