folgendes Beispiel:
def cheeseshop(kind, *arguments, **keywords):
print("-- Haben sie", kind, "?")
print("-- Tut mir leid,", kind, "ist leider gerade aus.")
for arg in arguments:
print(arg)
print("-" * 40)
keys = sorted(keywords.keys())
for kw in keys:
print(kw, ":", keywords[kw])
Wird aufgerufen mit:
cheeseshop("Limburger", "Der ist sehr flüssig, mein Herr.",
"Der ist wirklich sehr, SEHR flüssig, mein Herr.",
shopkeeper="Michael Palin",
client="John Cleese",
sketch="Cheese Shop Sketch")
Gibt aus:
-- Haben sie Limburger ?
-- Tut mir leid, Limburger ist leider gerade aus.
Der ist sehr flüssig, mein Herr.
Der ist wirklich sehr, SEHR flüssig, mein Herr.
----------------------------------------
client : John Cleese
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch
Meine Frage bezieht sich ausschließlich auf den blauen Teil: Ich verstehe nicht ganz, was das Programm hier macht. Ich versuche mal die Zeilen nach meinem Verständnis im Code durchzugehen:
1) **keywords: Wird im Tutorial als ein Parameter beschrieben, der als eine art Wörterbuch fungiert. Also quasi eine Variable, der z.B. ein String oder ein Integer zugewiesen wird, richtig? Also z.B.
a = 1 oder wie im Beispiel, "client="John Cleese", etc.
Also von den 3 Keywords wäre eines "client="john Cleese", richtig?
2) Weiter im Code: keys = sorted(keywords.keys())
Ich weiß nicht genau, was diese Line macht, außer dass sie die Eingabe von **keywords alphabetisch sortiert!? Da ich wissen wollte, was "keys" definiert, habe ich
an dieser Stelle den Rest des Codes entfernen und durch: print(keys) ersetzt, das Ergebnis:
['client', 'shopkeeper', 'sketch']
3)for kw in keys:
print(kw, ":", keywords[kw])
Nun, das irritiert mich am meisten: "kw" ist ein Element in "keys". Wenn "keys" nun 'client', 'shopkeeper' und 'sketch' sind, wo kann sich dann darin noch der Rest verstecken? Was genau bedeutet keywords[kw]? Ist
Keywords eine liste und [kw] ein Index? Sorry, ich kapiers einfach nicht :/