Eu não entendo o exemplo a seguir, digamos que eu tenho essas funções:
# 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
Por que o número 1 é a solução certa e o número 2 é o errado? **kwargs
é basicamente um ditado, então, se eu quiser passar o argumento para o openX, acho que o caminho correto seria sem **
e apenas dando o ditado. Mas o python obviamente não gosta do segundo e me diz que dei 3 em vez de 2 argumentos. Então, qual é a razão por trás disso?
**args
no código. Este é possivelmente o pior nome possível, como as pessoas vão confundi-lo com*args