Tất cả các tham số bắt buộc phải được đặt trước bất kỳ đối số mặc định. Đơn giản vì chúng là bắt buộc, trong khi các đối số mặc định thì không. Về mặt cú pháp, người phiên dịch sẽ không thể quyết định giá trị nào khớp với đối số nào nếu chế độ hỗn hợp được cho phép. MộtSyntaxError được nêu lên nếu các đối số không được đưa ra theo đúng thứ tự:
Chúng ta hãy xem các đối số từ khóa, sử dụng chức năng của bạn.
def fun1(a="who is you", b="True", x, y):
... print a,b,x,y
Giả sử hàm được phép khai báo như trên, sau đó với các khai báo ở trên, chúng ta có thể thực hiện các cuộc gọi đối số từ khóa hoặc vị trí (thông thường) sau:
func1("ok a", "ok b", 1) # Is 1 assigned to x or ?
func1(1) # Is 1 assigned to a or ?
func1(1, 2) # ?
Làm thế nào bạn sẽ đề xuất việc gán các biến trong lệnh gọi hàm, cách các đối số mặc định sẽ được sử dụng cùng với các đối số từ khóa.
>>> def fun1(x, y, a="who is you", b="True"):
... print a,b,x,y
...
Tham khảo O'Reilly - Core-Python
Khi hàm này sử dụng các đối số mặc định đúng về mặt cú pháp cho các lệnh gọi hàm trên. Gọi đối số từ khóa hữu ích để có thể cung cấp cho các đối số vị trí không theo thứ tự, nhưng, cùng với các đối số mặc định, chúng cũng có thể được sử dụng để "bỏ qua" các đối số bị thiếu.
def myfunction(position_arguments, *arguments, **keywords):`....`