Ghi chú Python
Đăng ngày 19 November 2023
Cài đặt python trên windows
Đang chạy python
Vấn đề: Python venv
cd mon_projet
python -m venv mon_venv
source mon_venv/bin/activate
# Sur windows
mon_venv\Scripts\activate
deactivate
cài đặt yêu cầu
pip install -r requirements.txt
khởi tạo
Các Design Patterns của GoF trong Python
Các design patterns của GoF là một tập hợp gồm 23 design patterns đã được mô tả trong cuốn sách "Design Patterns: Elements of Reusable Object-Oriented Software".
Dưới đây là danh sách các design patterns của GoF
| Tên | Mô tả |
|---|---|
Factory Method |
Tạo các đối tượng mà không cần chỉ định lớp chính xác cần khởi tạo. |
Abstract Factory |
Tạo các họ đối tượng liên quan hoặc phụ thuộc mà không cần chỉ định lớp cụ thể của chúng. |
Người xây dựng |
Tách biệt việc xây dựng một đối tượng phức tạp khỏi biểu diễn của nó để cùng một quá trình xây dựng có thể tạo ra các biểu diễn khác nhau. |
Nguyên mẫu |
Tạo các đối tượng mới bằng cách sao chép một prototype hiện có. |
Singleton |
Hạn chế việc khởi tạo một lớp chỉ cho một đối tượng duy nhất. |
Bộ điều hợp |
Chuyển đổi giao diện của một lớp thành một giao diện khác mà khách hàng mong đợi. |
Cầu nối |
Tách biệt một abstraction khỏi implementation của nó để cả hai có thể thay đổi độc lập. |
Hỗn hợp |
Hãy sắp xếp các đối tượng trong các cấu trúc dạng cây để biểu diễn các phân cấp bộ phận-toàn thể. |
Decorator |
Gắn động các trách nhiệm bổ sung vào một đối tượng. |
Facade |
Cung cấp một giao diện thống nhất cho một tập hợp các giao diện trong một phân hệ. |
Flyweight |
Giảm chi phí tạo và sử dụng các đối tượng nhẹ. |
Proxy |
Cung cấp một vật thay thế hoặc một trình giữ chỗ cho một đối tượng khác để kiểm soát quyền truy cập vào đối tượng đó. |
Chuỗi Trách nhiệm |
Cho phép nhiều hơn một đối tượng xử lý một yêu cầu. |
Lệnh |
Đóng gói một yêu cầu vào một đối tượng, từ đó cho phép tham số hóa các client với các yêu cầu, hàng đợi hoặc nhật ký khác nhau, và hỗ trợ các thao tác có thể hủy bỏ. |
Trình thông dịch |
Hãy cung cấp một biểu diễn về ngữ pháp của một ngôn ngữ và sử dụng biểu diễn đó để thông dịch các câu trong ngôn ngữ này. |
Iterator |
Cung cấp một phương thức để duyệt tuần tự các phần tử của một đối tượng tập hợp mà không làm lộ biểu diễn cơ bản của nó. |
Trung gian |
Cho phép giảm bớt các phụ thuộc phức tạp giữa các đối tượng bằng cách làm cho chúng chỉ giao tiếp với nhau thông qua một đối tượng trung gian. |
Hãy nhớ rằng |
Cung cấp khả năng khôi phục một đối tượng về trạng thái trước đó (mà không vi phạm tính đóng gói). |
Người quan sát |
Định nghĩa một mối quan hệ phụ thuộc một-nhiều giữa các đối tượng sao cho khi một đối tượng thay đổi trạng thái, tất cả các đối tượng phụ thuộc của nó sẽ được thông báo và cập nhật tự động. |
Trạng thái |
Cho phép một đối tượng thay đổi hành vi khi trạng thái nội bộ của nó thay đổi. |
Chiến lược |
Định nghĩa một họ các thuật toán, đóng gói mỗi thuật toán và khiến chúng có thể thay thế cho nhau. |
Template Method |
Định nghĩa khung sườn của một thuật toán trong một phương thức, chuyển giao một số bước cho các lớp con. |
Khách truy cập |
Cho phép định nghĩa một thao tác mới thực hiện trên một cấu trúc các đối tượng mà không làm thay đổi các lớp của những đối tượng đó. |
Lập trình hàm
Thư viện |
URL |
Mô tả |
PyMonad |
PyMonad là một triển khai các cấu trúc dữ liệu monad trong Python dựa trên các ngôn ngữ lập trình như Haskell và F# với các triển khai cho những loại monad được sử dụng phổ biến nhất trong lập trình hàm.https://www.miguelfarrajota.com/2021/06/monads-in-python-with-pymonad/[bài viết] |
|
PyFunctional |
PyFunctional là một thư viện Python cho lập trình hàm, cung cấp các công cụ để làm việc với các hàm thuần túy và các đối tượng có thể lặp. |
|
Toolz |
Toolz là một thư viện Python cho lập trình hàm, cung cấp các công cụ để làm việc với các hàm thuần túy và các đối tượng có thể lặp (iterables). |
|
Fn.py |
Fn.py` là một thư viện Python cho lập trình hàm, cung cấp các công cụ để làm việc với các hàm thuần khiết và các đối tượng có thể lặp. |
|
Dừa |
Coconut bổ sung nhiều tính năng cho Python để lập trình hàm, bao gồm cả pattern matching.https://stackoverflow.com/questions/11909681/are-there-pattern-matching-functions-in-python-like-this[cuộc hội thoại sof] |
tác dụng phụ
vòng lặp
# impérative way
result = []
for i in inputs:
x = f(g(i))
result.append(x)
# idiomatic way
result = map(comp(f,g), inputs)