Я не понимаю следующий пример, скажем, у меня есть следующие функции:
# 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
Почему # 1 - правильное решение, а # 2 - неправильное? **kwargs
в основном является dict, поэтому, если я хочу передать аргумент openX, я думаю, что правильный путь был бы без **
и просто давал бы dict. Но python явно не нравится второй и говорит мне, что я дал 3 вместо 2 аргументов.
Так в чем причина этого?