Ich verstehe das folgende Beispiel nicht, sagen wir, ich habe diese Funktionen:
# python likes
def save(filename, data, **kwargs):
fo = openX(filename, "w", **kwargs) # <- #1
fo.write(data)
fo.close()
# python doesnt like
def save2(filename, data, **kwargs):
fo = openX(filename, "w", kwargs) # <- #2
fo.write(data)
fo.close()
def openX(filename, mode, **kwargs):
#doing something fancy and returning a file object
Warum ist # 1 die richtige Lösung und # 2 die falsche? **kwargsist im Grunde ein Diktat. Wenn ich also das Argument an openX weitergeben möchte, denke ich, wäre der richtige Weg ohne **und nur das Diktat zu geben. Aber Python mag das zweite offensichtlich nicht und sagt mir, dass ich 3 statt 2 Argumente gegeben habe. Was ist der Grund dafür?
**argsim Code nennen. Dies ist möglicherweise der schlechteste Name, mit dem die Leute ihn verwechseln werden*args