Kann eine variable Anzahl von Argumenten an eine Funktion übergeben werden? [python]
Answers
Hinzufügen zum Abwickeln Post:
Sie können auch mehrere Schlüsselwertargumente senden.
def myfunc(**kwargs):
# kwargs is a dictionary.
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)
myfunc(abc=123, efh=456)
# abc = 123
# efh = 456
Und Sie können die beiden mischen:
def myfunc2(*args, **kwargs):
for a in args:
print a
for k,v in kwargs.iteritems():
print "%s = %s" % (k, v)
myfunc2(1, 2, 3, banan=123)
# 1
# 2
# 3
# banan = 123
Sie müssen in dieser Reihenfolge deklariert und aufgerufen werden, dh die Funktion signature muss * args, ** kwargs sein und in dieser Reihenfolge aufgerufen werden.
Question
Ähnlich wie bei Varargs in C oder C ++:
fn(a, b)
fn(a, b, c, d, ...)
Wenn ich darf, ist der Code von Skurmedel für Python 2; iteritems
es an Python 3 anzupassen, ändern Sie iteritems
in items
und fügen Sie Klammern zum print
. Das könnte Anfänger wie mich daran hindern zu stoßen: AttributeError: 'dict' object has no attribute 'iteritems'
und sucht woanders (zB https://.com/a/30418498/6358973 ) warum das passiert.
def myfunc(**kwargs):
for k,v in kwargs.items():
print ("%s = %s" % (k, v))
myfunc(abc=123, efh=456)
# abc = 123
# efh = 456
und:
def myfunc2(*args, **kwargs):
for a in args:
print a
for k,v in kwargs.items():
print ("%s = %s" % (k, v))
myfunc2(1, 2, 3, banan=123)
# 1
# 2
# 3
# banan = 123