Tôi không hiểu ví dụ sau, giả sử tôi có các chức năng này:
# 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
Tại sao # 1 là giải pháp đúng và # 2 là sai? **kwargsvề cơ bản là một lệnh, vì vậy nếu tôi muốn truyền lại đối số cho openX tôi nghĩ rằng cách chính xác sẽ là không có **và chỉ đưa ra lệnh. Nhưng python rõ ràng không thích cái thứ hai và nói với tôi rằng tôi đã đưa ra 3 thay vì 2 đối số. Vì vậy, lý do đằng sau này là gì?
**argstrong mã. Đây có thể là cái tên tồi tệ nhất có thể vì mọi người sẽ nhầm lẫn với nó*args