次の例は理解できません。これらの機能があるとしましょう。
# 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は明らかに2番目の引数が気に入らず、引数を2つではなく3つ指定したことを教えてくれます。これの背後にある理由は何ですか?
**argsコードでそれを呼び出すのかしら。これは、人々が混同する可能性があるため、おそらく最悪の名前になる可能性があります*args