Python là ngôn ngữ lập trình hướng đối tượng [OOP]. Tuy nhiên, trái ngược với nhiều ngôn ngữ lập trình OOP khác, Python đơn giản và cực kỳ linh hoạt. Do đó, các nhà phát triển có thể chọn một phong cách lập trình phù hợp nhất với họ để giải quyết một vấn đề cụ thể một cách hiệu quả. Khi tôi nói các phong cách hoặc phong cách lập trình khác nhau, điều đó có nghĩa là cách bạn có thể viết mã của mình [Sau đây tôi sẽ gọi đây là phong cách]. Một số sử dụng thuật ngữ mô hình lập trình. Chủ yếu Python cho phép bạn viết chương trình theo 3 phong cách khác nhau. Những người đang có. hướng đối tượng, thủ tục và mệnh lệnh và chức năng. Đừng lo lắng nó có nghĩa là gì ngay bây giờ. Tôi sẽ lấy một ví dụ duy nhất và chỉ ra cách viết lời giải theo cả 3 phong cách khác nhau. Trước khi bắt đầu viết mã, hãy xem ý nghĩa thực sự của các thuật ngữ này
1. hướng đối tượng
Đây là phong cách sẽ tạo ra các mẫu/mẫu mã có thể tái sử dụng. Điều này có tập hợp các khái niệm riêng của nó. Các lớp, Đối tượng, Kế thừa, Đóng gói, Đa hình, Trừu tượng, v.v. Giải thích toàn bộ ý tưởng bằng một vài câu là một nhiệm vụ hơi khó khăn [Tùy thuộc vào mức độ hiểu biết của bạn]. Tuy nhiên, nếu bạn muốn tìm hiểu sâu hơn về phong cách này, có rất nhiều tài nguyên trực tuyến. Bạn có thể tìm thấy một hướng dẫn tốt cho người mới bắt đầu ở đây trong DataCamp. Một số người cho rằng Python không hỗ trợ đầy đủ mô hình này vì nó không thể gắn bó với các khái niệm như đóng gói. Tuy nhiên, phong cách này có thể sử dụng được khi bạn phải xử lý các mẫu, cấu trúc và tái sử dụng mã
2. thủ tục và mệnh lệnh
Một số định nghĩa lập trình thủ tục là một kiểu con của lập trình mệnh lệnh. Không giống như kiểu hướng đối tượng, kiểu này sử dụng cách tiếp cận tuyến tính hoặc từ trên xuống. Trong lập trình thủ tục, các nhà phát triển sử dụng các phép lặp từng bước trong đó các tác vụ chung được đặt trong các hàm được gọi bất cứ khi nào cần thiết. Chà, ở đây cũng có một chút sử dụng lại mã nhưng nó không phải là khía cạnh nổi bật ở đây. Python vượt trội trong việc triển khai mô hình cụ thể này
Phong cách lập trình mệnh lệnh được sử dụng với cả phong cách lập trình hướng đối tượng và thủ tục, nhưng thực tế quan trọng ở đây là với Python, bạn có thể sử dụng phong cách này một cách độc lập mà không cần sự trợ giúp của hai phong cách trên. Ở đó, trọng tâm là tạo ra các câu lệnh thay đổi trạng thái chương trình bằng cách tạo các thuật toán cho máy tính biết cách thực hiện. Phong cách này đặc biệt hữu ích khi thao tác cấu trúc dữ liệu. Một lần nữa Python hỗ trợ đầy đủ phong cách này
3. chức năng
Python không hoàn toàn hỗ trợ phong cách này vì Python không phải là ngôn ngữ lập trình chức năng nhưng nó kết hợp một số khái niệm của nó [Nếu bạn thích phong cách lập trình chức năng, thì Haskell có thể là lựa chọn tốt hơn]. "Ngôn ngữ chức năng là ngôn ngữ khai báo, chúng cho máy tính biết kết quả chúng muốn. Điều này thường trái ngược với các ngôn ngữ mệnh lệnh cho máy tính biết các bước cần thực hiện để giải quyết vấn đề". Tìm hiểu Python chức năng trong 10 phút là một tài liệu hay nếu bạn muốn tìm hiểu thêm về điều này
Tất cả những điều trên giống như lý thuyết và một số định nghĩa cấp cao để bạn có một bức tranh toàn cảnh hơn về ý nghĩa của tất cả những thuật ngữ này. Hãy lấy một ví dụ đơn giản
Chúng tôi có một danh sách các số và chúng tôi muốn tính tổng của những số đó trong danh sách. Hãy làm điều đó bằng cách sử dụng cả bốn loại phong cách lập trình
sample_list1 = [10,20,30,40] and sample_list2 = [50,60,70,80]
Hãy tính tổng các số trong example_list
bằng cách sử dụng kiểu lập trình hướng đối tượng
Mẫu_Mã_1Trong Sample_Code_1, chúng tôi sử dụng mẫu ListManipulator
để tạo các phiên bản của nó. Thuật ngữ được sử dụng cho các loại mẫu này trong OOP là 'lớp'. Lớp giống như một khuôn tô/mẫu. Bạn có thể tạo bất kỳ số lượng đối tượng/trường hợp nào từ stencil ListManipulator
và sử dụng các phương thức của nó. Bạn không cần phải viết lại toàn bộ các dòng. Thay vào đó, bạn gọi phương thức trên đối tượng đã tạo
Lưu ý rằng đối tượng listManipulator1
được tạo bằng đối tượng sample_list1
. Khi tôi gọilistManipulator1.any_list
, nó mang lại cho tôi sample_list1
vì chúng tôi đã sử dụng sample_list1
để tạo đối tượng listManipulator1
. Tương tự, example_list
0 được tạo với example_list
1. Khi chúng ta gọi các chức năng tương tự trên các phiên bản example_list
0, nó sẽ trả về tổng số của các phiên bản example_list
1. Như vậy, bạn có thể thấy rằng ListManipulator
là mẫu và listManipulator1
và example_list
0 là các thể hiện/đối tượng được tạo bằng mẫu đó. Do đó, chúng tôi đã sử dụng lại mã mẫu ListManipulator
Bên trong lớp ListManipulator
, tôi đã tạo 2 phương thức thực hiện cùng một thao tác. Điều này được thực hiện có chủ đích để cho thấy, mặc dù tôi đã sử dụng kiểu lập trình hướng đối tượng trong mã nhưng tôi cũng đã sử dụng kiểu mệnh lệnh. Vì vậy, tốt hơn hết là bạn nên hiểu rõ về tất cả các loại này
Hãy tính tổng các số trong example_list
bằng cách sử dụng phong cách lập trình thủ tục và mệnh lệnh
Mẫu_Mã_2Trong Sample_Code_2, bạn có thể thấy rằng tôi đã sử dụng lại hàm ListManipulator
0 để tính tổng sample_list1
và example_list
1. Kiểu thủ tục dựa trên các lệnh gọi thủ tục để tạo mã được mô đun hóa. Điều đó có nghĩa là bạn có thể sử dụng các hàm để nhóm loại công việc tương tự và đơn giản hóa toàn bộ mã
Sample_Code_3 là một ví dụ về phong cách mệnh lệnh. Ngay từ cái nhìn đầu tiên, bạn sẽ thấy rằng không có nhiều khác biệt giữa phong cách thủ tục và mệnh lệnh. Lý do là kiểu thủ tục sử dụng lập trình mệnh lệnh. Tuy nhiên, trọng tâm là cách thức hoạt động của chương trình. Các chương trình thay đổi thông tin trạng thái khi cần thiết để đạt được mục tiêu được gọi là mệnh lệnh. Tại đây giá trị của biến ListManipulator
3 thay đổi theo hướng dẫn của lập trình viên. Vì vậy, chúng tôi nói rằng các biến này có trạng thái. Khi một biến có trạng thái, biến đó được gắn với một bộ xử lý cụ thể giúp chuyển đổi trạng thái này. Chúng tôi sử dụng phong cách này chủ yếu khi làm việc với cấu trúc dữ liệu. Tuy nhiên, trong phong cách lập trình thủ tục và hướng đối tượng, bạn sẽ thấy phong cách mệnh lệnh này thường xuyên hơn. Nhưng chương trình Chức năng giữ một cách tiếp cận khác
Hãy tính tổng các số trong example_list
bằng kiểu lập trình hàm
Mẫu_Mã_4Trong lập trình chức năng, chúng tôi không nói cho máy tính biết phải làm gì mà là bạn nói cho nó biết nội dung là gì. Trong lập trình chức năng, việc thay đổi biến [trong chương trình chức năng thuần túy, họ không sử dụng thuật ngữ biến], điều mà chúng ta không thấy. Ngoài ra, bạn sẽ không thấy các chức năng ảnh hưởng đến những thứ bên ngoài phạm vi của chúng. Giống như thay đổi giá trị biến toàn cục. Trong mô hình lập trình hàm, nếu một hàm được gọi hai lần với cùng tham số, thì đảm bảo trả về cùng một kết quả. Sẽ không có tác dụng phụ như thay đổi giá trị của biến khác ảnh hưởng đến chức năng khác, v.v. Điều này rất giống với các hàm toán học. Ngoài ra, trong lập trình hàm, chúng ta không sử dụng vòng lặp, thay vào đó, bạn sẽ thấy đệ quy. Tôi biết ví dụ mà tôi đã thực sự phản ánh rất nhiều sự khác biệt nhưng tôi nghĩ nó có lý. Nếu bạn có một ví dụ tốt hơn xin vui lòng bình luận dưới đây. Như mọi khi, xin vui lòng đưa ra phản hồi và phê bình mang tính xây dựng của bạn. tiếp tục học