Saya tidak mengerti contoh berikut, katakanlah saya memiliki fungsi-fungsi ini:
# 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
Mengapa # 1 solusi yang tepat dan # 2 yang salah? **kwargspada dasarnya adalah dict, jadi Jika saya ingin meneruskan argumen ke openX saya pikir cara yang benar akan tanpa **dan hanya memberikan dict. Tapi python jelas tidak suka yang kedua dan mengatakan saya memberi 3 bukannya 2 argumen. Jadi apa alasan di balik ini?
**argsdalam kode. Ini mungkin nama yang terburuk karena orang akan bingung dengan*args