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 la n ° 1 est-elle la bonne solution et la n ° 2 la mauvaise? **kwargsest fondamentalement un dict, donc si je veux transmettre l'argument à openX, je pense que la bonne façon serait de ne pas **donner le dict. Mais python n'aime évidemment pas le second et me dit que j'ai donné 3 arguments au lieu de 2. Alors, quelle est la raison derrière cela?
**argsdans le code. C'est peut-être le pire nom possible, car les gens le confondront avec*args