Một điều thực sự quan trọng cho câu hỏi này (và câu trả lời) là như sau: Cái quái gì là lập trình chức năng, và các thuộc tính quan trọng nhất của nó là gì. Tôi sẽ cố gắng đưa ra quan điểm của tôi về nó:
Lập trình hàm rất giống như viết toán trên bảng trắng. Khi bạn viết phương trình trên bảng trắng, bạn không nghĩ về thứ tự thực hiện. Không có (thường) không có đột biến. Bạn không quay lại vào ngày hôm sau và xem xét nó, và khi bạn thực hiện lại các phép tính, bạn sẽ nhận được một kết quả khác (hoặc bạn có thể, nếu bạn đã uống cà phê tươi :)). Về cơ bản, những gì trên bảng là ở đó, và câu trả lời đã có sẵn khi bạn bắt đầu viết mọi thứ xuống, bạn chỉ không nhận ra nó là gì.
Lập trình chức năng là rất nhiều như thế; bạn không thay đổi mọi thứ, bạn chỉ cần đánh giá phương trình (hoặc trong trường hợp này là "chương trình") và tìm ra câu trả lời là gì. Chương trình vẫn còn đó, chưa sửa đổi. Tương tự với dữ liệu.
Tôi sẽ xếp hạng các tính năng sau đây là các tính năng quan trọng nhất của lập trình chức năng: a) tính minh bạch tham chiếu - nếu bạn đánh giá cùng một tuyên bố tại một thời điểm và địa điểm khác, nhưng với cùng các giá trị biến, nó vẫn có nghĩa như nhau. b) không có tác dụng phụ - cho dù bạn nhìn chằm chằm vào bảng trắng bao lâu, phương trình mà một người khác đang nhìn vào bảng trắng khác sẽ không vô tình thay đổi. c) hàm cũng là giá trị. có thể được truyền xung quanh và áp dụng với, hoặc các biến khác. d) thành phần hàm, bạn có thể thực hiện h = g · f và do đó xác định hàm mới h (..) tương đương với cách gọi g (f (..)).
Danh sách này theo thứ tự ưu tiên của tôi, vì vậy tính minh bạch tham chiếu là quan trọng nhất, tiếp theo là không có tác dụng phụ.
Bây giờ, nếu bạn đi qua python và kiểm tra ngôn ngữ và thư viện hỗ trợ tốt như thế nào, và đảm bảo, những khía cạnh này - thì bạn đang trên đường trả lời câu hỏi của chính mình.