bin noch recht frisch mit Python unterwegs und bekomme einige Dinge nicht in meinen Kopf, oder sagen wir mal nur so halb.
Es geht um *args und **kwargs. Direkt vorweg: Ich habe, so glaube ich zumindest, grundsätzlich verstanden wie *args und **kwargs als Parameter in Methoden/Funktionen funktionieren. Mir erschließt sich aber nur unzureichend was ich damit anstellen kann und welchen Vorteil Sie mir bringen. Einzig in Verbindung mit argparse() um ein Kommandozeilen-Script zu bauen würde ich das als nützlich empfinden. Alles andere ist doch total umständlich. Hier ein einfaches Beispiel was ich mir ausgedacht habe, als ich mit den Argumenten-Containern herumgespielt habe. Die Funktion addiert einfach nur zahlen. Einmal so wie ich alles bisher programmiere, also nur positionelle Argumente und einmal mit Arg-Containern.
Code: Alles auswählen
def money(gehalt, bonus, weihnachtsgeld=0, ueberstunden=0):
if ueberstunden > 0:
return gehalt + ueberstunden * bonus + weihnachtsgeld
else:
return gehalt + weihnachtsgeld
def money_args(*args, **kwargs):
if len(args) == 2:
gehalt = args[0]
bonus = args[1]
else:
return "Da ist wohl was falsch eingegeben worden!"
ueberstunden = 0
weihnachtsgeld = 0
for key, value in kwargs.items():
if key == 'ueberstunden': ueberstunden = value
if key == 'weihnachtsgeld': weihnachtsgeld = value
return gehalt + ueberstunden * bonus + weihnachtsgeld
print(money(3000, 20, ueberstunden=0, weihnachtsgeld=2000))
print(money_args(3000, 20, ueberstunden=10, weihnachtsgeld=2000))
Also, kann mir mal jemand sagen wann und sowas überhaupt anwendet und was so die best practise im Umgang damit ist?
Kann mir kaum vorstellen, dass man sowas wie oben so benutzen würde.
danke euch
brave