3 Stimmen

Übergabe von Parametern des Typs Liste und Wörterbuch mit Python

Wenn ich diesen Code ausführe

def func(x, y, *w, **z):
  print x
  print y
  if w:
      print w

  if z:
      print z
  else:
      print "None"

func(10,20, 1,2,3,{'k':'a'})

Ich erhalte das folgende Ergebnis.

10
20
(1, 2, 3, {'k': 'a'})
None

Aber ich habe folgendes erwartet: die Listenparameter (1,2,3), die zu *w passen, und das Wörterbuch, das zu **z passt.

10
20
(1,2,3)
{'k':'a'}

F: Was ist schief gelaufen? Wie kann ich die Liste und das Wörterbuch als Parameter übergeben?

Hinzugefügt

func(10,20, 10,20,30, k='a')

scheint zu funktionieren

7voto

Daniel Stutzbach Punkte 69710

Setzen Sie zwei Sternchen vor das Wörterbuch:

func(10,20, 1,2,3,**{'k':'a'})

2voto

dash-tom-bang Punkte 16755

Ich bin mir nicht sicher, was das "Eingabe"-Format ist, aber das wird funktionieren:

func(10,20, 1,2,3, k='a')

Dabei muss das k=a nicht einmal am Ende stehen, sondern kann irgendwo nach den ersten beiden Argumenten stehen. Dann werden die 1,2,3 und andere "unbenannte" Argumente in ein Tupel (glaube ich?) für das Ein-Stern-Arg gestopft.

1voto

Michael Herold Punkte 1287

Wenn Sie es besonders genau nehmen wollen, können Sie Folgendes tun

func(10,20,*[1,2,3],**{'k':'a'})

um (dem Leser) mitzuteilen, welches Argument Sie zu jedem Parameter der Sonderform hinzufügen möchten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X