Hướng dẫn dùng amazing def python
Note: see the link below for the English version of this article. Show
Nội dung chính Show
https://duongnt.com/context-manager Trong Python, context manager thường được dùng để quản lý tài nguyên. Nó giúp chúng ta không phải lặp lại logic cấp phát hay giải phóng tài nguyên. Nhưng không có lý do gì chúng ta phải bó buộc mình vào chỉ một mục đích duy nhất này. Với một chút sáng tạo, ta có thể dùng context manager để đo thời gian chạy của hàm hay format dữ liệu đầu ra,… Quản lý tài nguyên một cách thủ côngGiả sử ta có một lớp để quản lý kết nối Internet như dưới đây. Lớp này có các hàm để mở và đóng kết nối.
Phương pháp truyền thống để đảm bảo kết nối luôn được đóng lại sau khi sử dụng là dùng
Biến lớp Connection thành context managerThay vì tự mình viết đoạn
Sau đó, ta có thể dùng lớp này với từ khóa
Dùng context manager để đo thời gian chạy của hàmLớp để đo thời gian chạy của hàmNhư đã thấy trong phần trước, các lệnh trong hàm
Ta sẽ thử dùng lớp
Trên máy của tôi, đoạn code trên trả về kết quả như sau.
Context manager mà không cần tạo lớp mớiTa có thể viết context manager mà không cần tạo lớp mới. Lúc này, ta sử dụng decorator
Ta có thể thấy là sau khi ghi lại thời điểm bắt đầu chạy hàm, chúng ta dùng từ khóa Cách dùng
Format tag HTML với context managerThoạt nghe, việc format tag HTML nghe không liên quan gì với context manager. Nhưng liệu ta có thể viết đoạn code như dưới đây, với độ lùi vào của từng lệnh
Viết lớp HtmlTagLớp
Ta chia bài toán hiện tại thành 3 phần: mở tag, ghi nội dung, và đóng tag. Tất nhiên là việc mở tag được thực hiện trong hàm
Tương tự thế, khi ta ra khỏi đoạn code
Ở giữa lúc mở tag và đóng tag, chúng ta dùng
Các bạn có thể tham khảo code hoàn chỉnh tại đường link này. Thử chạy formatter vừa tạoKết quả khi chạy đoạn code trên là như sau. Bài tập về nhà cho bạn đọcThông thường, tag và nội dung của các tag Sau khi chỉnh sửa, lớp Kết thúcMặc dù các lớp |