Trình quản lý bối cảnh yêu cầu Python
Trình quản lý bối cảnh của Python rất tốt cho việc quản lý tài nguyên và ngăn chặn việc truyền bá các bản tóm tắt bị rò rỉ. Có thể bạn đã sử dụng nó khi mở tệp hoặc kết nối cơ sở dữ liệu. Thông thường nó bắt đầu bằng một câu lệnh 4 như thế này Show
Trong trường hợp trên, 5 sẽ tự động đóng khi luồng thực thi vượt ra ngoài phạm vi. Điều này tương đương với việc viết
Viết trình quản lý bối cảnh tùy chỉnhĐể viết trình quản lý bối cảnh tùy chỉnh, bạn cần tạo một lớp bao gồm các phương thức 6 và 7. Hãy tạo lại một trình quản lý bối cảnh tùy chỉnh sẽ thực hiện quy trình làm việc tương tự như trên
Bạn có thể sử dụng lớp trên giống như trình quản lý bối cảnh thông thường
Từ Trình tạo đến Trình quản lý ngữ cảnhTạo trình quản lý bối cảnh bằng cách viết một lớp với các phương thức 6 và 7, không khó. Tuy nhiên, bạn có thể đạt được độ ngắn gọn tốt hơn bằng cách xác định chúng bằng cách sử dụng trình trang trí 00. Trình trang trí này chuyển đổi hàm tạo thành trình quản lý bối cảnh. Kế hoạch chi tiết để tạo trình quản lý bối cảnh trang trí giống như thế này 0Khi bạn sử dụng trình quản lý ngữ cảnh với câu lệnh 4 3Nó tạm dịch là 4Mã thiết lập đi trước khối 02. Lưu ý điểm mà máy phát điện mang lại. Đây là nơi khối mã lồng trong câu lệnh 4 được thực thi. Sau khi hoàn thành khối mã, trình tạo sẽ được tiếp tục. Nếu một ngoại lệ chưa được xử lý xảy ra trong khối, nó sẽ được kích hoạt lại bên trong trình tạo tại điểm xảy ra 04 và sau đó khối 05 được thực thi. Nếu không có ngoại lệ chưa được xử lý nào xảy ra, mã sẽ tiếp tục đến khối 05 nơi bạn chạy mã dọn dẹp của mìnhHãy triển khai trình quản lý ngữ cảnh 07 tương tự với trình trang trí 08 2Bây giờ sử dụng nó giống như trước đây
Viết Trình quản lý bối cảnh làm Người trang tríBạn cũng có thể sử dụng trình quản lý ngữ cảnh làm trình trang trí. Để làm được như vậy, trong khi định nghĩa lớp, bạn phải kế thừa từ lớp 09. Hãy tạo một trình trang trí 30 sẽ được áp dụng cho chức năng mở tệp. Người trang trí sẽ
6Bạn có thể sử dụng trang trí như thế này 0Sử dụng chức năng như thế này sẽ trở lại 1 2Bạn cũng có thể tạo trình trang trí tương tự thông qua trình trang trí 00 3Bối cảnh lồng nhauBạn có thể lồng nhiều trình quản lý ngữ cảnh để quản lý đồng thời các tài nguyên. Hãy xem xét người quản lý giả sau đây 4 5Chú ý đơn hàng họ đang đóng. Trình quản lý bối cảnh được coi là một ngăn xếp và phải được thoát theo thứ tự ngược lại mà chúng được nhập vào. Nếu một ngoại lệ xảy ra, thứ tự này quan trọng, vì bất kỳ người quản lý bối cảnh nào cũng có thể chặn ngoại lệ, tại thời điểm đó, những người quản lý còn lại thậm chí sẽ không nhận được thông báo về điều này. Phương pháp 7 cũng được phép đưa ra một ngoại lệ khác và các trình quản lý bối cảnh khác sau đó sẽ có thể xử lý ngoại lệ mới đóKết hợp nhiều trình quản lý ngữ cảnhBạn cũng có thể kết hợp nhiều trình quản lý bối cảnh. Hãy xem xét hai nhà quản lý này 6Bây giờ kết hợp cả hai bằng cách sử dụng cú pháp trang trí. Hàm sau đây nhận các trình quản lý xác định ở trên 33 và 34 và trả về một trình quản lý ngữ cảnh kết hợp 35 7Điều này có thể được sử dụng như 8 9Nếu bạn có nhiều trình quản lý bối cảnh khác nhau và bạn muốn kết hợp chúng một cách duyên dáng, thì 36 sẵn sàng trợ giúp. Hãy viết lại trình quản lý ngữ cảnh 35 bằng cách sử dụng 38. Hàm này lấy các trình quản lý ngữ cảnh riêng lẻ và các đối số của chúng dưới dạng các bộ và trả về trình quản lý kết hợp 0 1 2 38 cũng có thể được sử dụng trong trường hợp bạn muốn quản lý nhiều tài nguyên một cách dễ dàng. Ví dụ, giả sử, bạn cần tạo một danh sách từ nội dung của nhiều tệp trong một thư mục. Hãy xem cách bạn có thể làm như vậy trong khi tránh tình trạng rò rỉ bộ nhớ ngoài ý muốn với tính năng quản lý tài nguyên mạnh mẽ 3Sử dụng trình quản lý ngữ cảnh để tạo phiên SQLAlchemyNếu bạn đã quen thuộc với SQLALchemy, bộ công cụ SQL của Python và Trình ánh xạ quan hệ đối tượng, thì bạn có thể biết cách sử dụng 40 để chạy truy vấn. Một 40 về cơ bản biến bất kỳ truy vấn nào thành một giao dịch và biến nó thành nguyên tử. Trình quản lý bối cảnh có thể giúp bạn viết một phiên giao dịch theo cách rất tao nhã. Quy trình truy vấn cơ bản trong SQLAlchemy có thể trông như thế này 4Đoạn trích trên tạo một kết nối 42 trong bộ nhớ và một hàm 43 với trình quản lý ngữ cảnh. Hàm session_scope đảm nhiệm việc tự động cam kết và khôi phục trong trường hợp ngoại lệ. Hàm 43 có thể được sử dụng để chạy các truy vấn theo cách sau 5Trừu tượng Away Xử lý ngoại lệ Quái dị với Trình quản lý ngữ cảnhĐây là trường hợp sử dụng trình quản lý bối cảnh yêu thích tuyệt đối của tôi. Giả sử bạn muốn viết một hàm nhưng muốn loại bỏ logic xử lý ngoại lệ. Logic xử lý ngoại lệ với ghi nhật ký phức tạp thường có thể làm xáo trộn logic cốt lõi của chức năng của bạn. Bạn có thể viết một trình quản lý bối cảnh kiểu trang trí sẽ xử lý các ngoại lệ cho bạn và tách các mã bổ sung này khỏi logic chính của bạn. Hãy viết một trình trang trí sẽ xử lý đồng thời 45 và 46 6Bây giờ hãy sử dụng chức năng này trong một chức năng xảy ra các ngoại lệ này 7 8 9Bạn có thể thấy rằng người trang trí ________ 147 đang làm công việc nặng nhọc cho bạn. Khá gọn gàng, phải không? Ví dụ sau đây là một ví dụ phức tạp hơn về việc sử dụng trình quản lý bối cảnh để tách biệt sự quái dị trong việc xử lý lỗi của bạn khỏi logic chính. Nó cũng ẩn các logic ghi nhật ký phức tạp khỏi phương thức chính 0Điều này sẽ trở lại 1Các tham số liên tục trên các yêu cầu http với Trình quản lý ngữ cảnhMột trường hợp sử dụng tuyệt vời khác cho trình quản lý ngữ cảnh là tạo các tham số liên tục trên nhiều yêu cầu http. Thư viện 48 của Python có một đối tượng 40 sẽ cho phép bạn dễ dàng đạt được điều này. Vì vậy, nếu bạn đang thực hiện một số yêu cầu đối với cùng một máy chủ, thì kết nối TCP bên dưới sẽ được sử dụng lại, điều này có thể dẫn đến hiệu suất tăng đáng kể. Ví dụ sau được lấy trực tiếp từ tài liệu chính thức của yêu cầu. Hãy duy trì một số cookie theo yêu cầu 2Điều này sẽ hiển thị 3Nhận xétTất cả các đoạn mã được cập nhật cho python 20. Để tránh dư thừa, tôi đã cố ý loại trừ các ví dụ về câu lệnh lồng nhau và hàm 21 hiện không dùng nữa để tạo trình quản lý ngữ cảnh lồng nhau
Trình quản lý ngữ cảnh trong Python là gì?Trình quản lý ngữ cảnh được dùng để thiết lập và loại bỏ các ngữ cảnh tạm thời, thiết lập và giải quyết các cài đặt tùy chỉnh cũng như thu nhận và giải phóng tài nguyên . Hàm open() để mở tệp là một trong những ví dụ quen thuộc nhất của trình quản lý ngữ cảnh.
Yêu cầu Python có sử dụng https không?Yêu cầu xác minh chứng chỉ SSL cho yêu cầu HTTPS , giống như trình duyệt web.
__ nhập __ trong Python là gì?__enter__ và [__exit__] đều là các phương thức được gọi khi nhập và thoát khỏi phần thân của "câu lệnh with" (PEP .
Làm cách nào để nhận Phiên từ yêu cầu trong Python?Để lấy đối tượng Phiên trong Yêu cầu Python, bạn cần gọi các yêu cầu. Phương thức phiên() . Đối tượng Phiên có thể lưu trữ các tham số như cookie và tiêu đề HTTP. |