Je ne comprends pas l'exemple suivant, disons que j'ai ces fonctions :
# 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
Pourquoi n°1 est la bonne solution et n°2 la mauvaise ? **kwargs
est essentiellement un dict, donc si je veux transmettre l'argument à openX, je pense que la bonne méthode serait sans **
et en donnant simplement le dict. Mais Python n'aime évidemment pas le second et me dit que j'ai donné 3 au lieu de 2 arguments.
Alors, quelle est la raison derrière cela?