Văn bản bạn trích dẫn là dành cho định nghĩa của hàm và không liên quan gì đến các cuộc gọi đến hàm. Trong số gọi đối với chức năng đó, bạn đang sử dụng tính năng "đối số được đặt tên". Liên kết mà bạn cung cấp không phải là một chất lượng rất tốt, các tác giả có vẻ bối rối giữa hai thứ khác nhau.
Tham chiếu Python chỉ đề cập đến các đối số vị trí và từ khóa chỉ liên quan đến cuộc gọi đến một hàm (xem section 5.3.4 Calls
).
Khi họ nói về định nghĩa của hàm trong section 7.6 Function definitions
, đó là cụm từ hoàn toàn khác "giá trị thông số mặc định".
tôi nghi ngờ những người đặt lại với nhau rằng nhiên-ware không hoàn toàn quen thuộc với Python :-)
Bằng một ví dụ, hãy tham khảo các định nghĩa sau đây và kêu gọi:
def fn (a, b, c = 1):
return a * b + c
print fn (1, 2) # returns 3, positional and default.
print fn (1, 2, 3) # returns 5, positional.
print fn (c = 5, b = 2, a = 2) # returns 9, named.
print fn (b = 2, a = 2) # returns 5, named and default.
print fn (5, c = 2, b = 1) # returns 7, positional and named.
print fn (8, b = 0) # returns 1, positional, named and default.
Ý nghĩa của các thay đổi =
, tùy thuộc vào việc nó có trong định nghĩa hoặc trong cuộc gọi hay không.
Trong định nghĩa, nó đánh dấu đối số tùy chọn và đặt giá trị mặc định.
Trong cuộc gọi, nó chỉ cho phép bạn chỉ định đối số nào là giá trị nào, theo bất kỳ thứ tự nào bạn muốn.
"tại sao chúng tôi cũng có thể gọi nó bằng cú pháp đối số thực của từ khóa?" Bởi vì đó là cách ngôn ngữ hoạt động. –