[python] Kann eine variable Anzahl von Argumenten an eine Funktion übergeben werden?


1 Answers

Hinzufügen zum Abwickeln Beitrag:

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 zwei 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 Funktionssignatur muss * args, ** kwargs sein und in dieser Reihenfolge aufgerufen werden.

Question

Ähnlich wie Varargs in C oder C ++:

fn(a, b)
fn(a, b, c, d, ...)



Wenn ich darf, ist Skurmedels Code 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 Fehler '' dict 'object hat kein Attribut' iteritems '', wenn man versucht, NetworkX's write_shp () ) zu verwenden 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





Related



Tags

python python