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