lambda
rõ ràng là từ khóa; đó là một từ đặc biệt được nhận dạng bởi trình phân tích cú pháp, nếu không sẽ nằm trong định nghĩa của một số identifier
.
lambda
không phải là semantically một nhà điều hành. Toán tử chỉ là một hàm, nhưng được gọi với một cú pháp khác. Chúng ta có thể tưởng tượng thay thế toán tử +
bằng hàm add
; tất cả các chương trình của chúng tôi với phần bổ sung sẽ có nhiều chi tiết hơn và khó đọc hơn, nhưng chúng tôi vẫn có thể viết chúng. Mặt khác, cấu trúc ngôn ngữ lambda
không thể thay thế bằng chức năng; lambda x: x+1
không chỉ tính kết quả từ các giá trị x
và x+1
, bởi vì trong ngữ cảnh này, chúng không phải là giá trị (x
là tên của tham số cho hàm được xác định và x+1
là mã của phần lambda).
Trong cùng một trang bạn liên kết với chúng ta có: http://docs.python.org/py3k/reference/lexical_analysis.html#operators
Các thẻ sau đây là nhà khai thác:
+ - * ** / // %
<< >> & | ^ ~
< > <= >= == !=
Đó là toàn bộ nội dung của tiểu mục trên các nhà khai thác. Từ điều này, tôi có nghĩa là trong ngữ cảnh xác định mã của ngôn ngữ "toán tử" là toán tử biểu tượng, trong khi phần trên từ khóa rõ ràng là "những thứ này sẽ là từ định danh là từ khóa". Đó là lý do tại sao tôi nghĩ các toán tử từ khóa như not
, is
, in
, v.v. không được liệt kê. Nhưng chắc chắn có những thứ là các toán tử ngữ nghĩa là các từ khóa, cho dù trình phân tích cú pháp có xét đến các lớp riêng biệt hay không.
Tôi không chắc chắn lý do tại sao http://docs.python.org/py3k/reference/expressions.html#summary mô tả lambda
làm toán tử; Tôi chắc chắn sẽ không. Nói đúng ra nó không nói rõ ràng "lambda
là toán tử có mức ưu tiên thấp nhất", nó chỉ liệt kê lambda
trong một bảng có tiêu đề cột là "Toán tử". Có lẽ nó chỉ là một sự tiện lợi; mô tả lambda
là một điều có ưu tiên thấp là một cách hay để làm rõ cách Python phân tích cú pháp lambda x: x + 1
(về mặt lý thuyết có thể là (lambda x: x) + 1
hoặc lambda x: (x + 1)
).
Tôi khá chắc chắn rằng nó hợp lý để gọi 'lambda' một từ khóa chứ không phải là toán tử. – alberge
@alberge Lý do của bạn là gì? – Paragon
Tôi rõ ràng gắn những ngón tay trước não. Một số từ khóa python * là * toán tử. Chúng dường như là các tập hợp trùng lặp. – alberge