Trình quản lý bối cảnh có điều kiện của Python
Trong những năm qua, tôi đã sử dụng Show
Thực thi giao dịch cấp yêu cầuTrong khi sử dụng API, điều quan trọng là phải xử lý lỗi theo cách ngăn ngừa hỏng trạng thái cơ sở dữ liệu. Trong ví dụ sau, tôi đang thực hiện hai yêu cầu 0 tới một API và quay trở lại trạng thái ban đầu nếu bất kỳ yêu cầu nào trong số đó không thành công
Chạy cái này sẽ in đầu ra sau
Ở đây, hàm 1 thực hiện hai lệnh gọi đến điểm cuối 2 và hàm 3 xóa bản ghi đã tạo nếu bất kỳ một trong hai yêu cầu không thành công. Trong hàm 4, tôi đã sử dụng phương thức 5 để đăng ký cuộc gọi lại 3. Nếu bạn thay đổi 7 trong hàm 3 thành một cái gì đó giống như 9, bạn sẽ có thể thấy các cuộc gọi lại dọn dẹp đang hoạt động
Gọi móc sự kiện có điều kiệnChiến lược tương tự được sử dụng trong phần trước có thể được áp dụng để gọi móc sự kiện theo điều kiện. Ví dụ: giả sử bạn muốn chạy chức năng gọi lại khi chức năng sự kiện nào đó thực thi. Tuy nhiên, bạn chỉ muốn một loại chức năng gọi lại cụ thể được thực thi tùy thuộc vào trạng thái của điều kiện hoặc đường dẫn mã của bạn. Tôi đã tìm thấy mẫu sau đây hữu ích trong trường hợp này
Ở đây hook 0 sẽ chỉ được gọi nếu có lỗi trong đường dẫn thực thi của bạn dẫn đến một ngoại lệTránh cấu trúc bối cảnh lồng nhauNó có thể trở nên xấu đi khá nhanh khi bạn bắt đầu sử dụng nhiều trình quản lý bối cảnh lồng nhau. Ví dụ: nếu bạn cần mở hai tệp và sao chép nội dung từ tệp này sang tệp kia, thông thường bạn sẽ khởi động hai trình quản lý ngữ cảnh lồng nhau và chuyển nội dung như thế này
1 có thể giúp bạn thoát khỏi chỉ với một cấp độ làm tổ tại đây. Đây là một ví dụ hoàn chỉnh
Ví dụ này tạo hai trường hợp tệp tạm thời trong bộ nhớ với ____12_______2. 3 có thể được sử dụng làm trình quản lý bối cảnh. Tuy nhiên, thay vì lồng hai thể hiện, tôi đang sử dụng phương pháp 4 để nhập vào trình quản lý ngữ cảnh mà không sử dụng câu lệnh 5 một cách rõ ràng. Phương thức 6 này đảm bảo rằng phương thức 7 của trình quản lý ngữ cảnh tương ứng sẽ được gọi đúng khi kết thúc quá trình chạy hàm 8Sau đó, trong phần nội dung của 1, chúng tôi đang viết một số nội dung vào tệp trong bộ nhớ đầu tiên và sau đó sao chép nội dung vào tệp trong bộ nhớ khác. Nếu chúng tôi phải mở và quản lý nhiều trình quản lý bối cảnh hơn nữa, thì theo cách này, chúng tôi có thể thực hiện điều đó mà không cần tạo thêm bất kỳ tổ hợp nàoÁp dụng nhiều bản vá làm trình quản lý ngữ cảnh 0 của Python có thể được sử dụng làm cả trình trang trí và trình quản lý ngữ cảnh. Đối với việc vá và hủy vá chi tiết trong quá trình kiểm tra, cách tiếp cận của trình quản lý ngữ cảnh cho phép bạn kiểm soát nhiều hơn so với đối tác trang trí của nó. Trong trường hợp này, 1 có thể giúp bạn tránh được nhiều lồng giống như trong phần trước
Chạy đoạn mã trên với pytest sẽ cho thấy rằng bài kiểm tra đã vượt qua mà không có bất kỳ lỗi nào
Ở đây, tôi đang thực hiện các yêu cầu 2 và 0 với thư viện 4 và trong hàm 5, khả năng gọi 6 và 7 được vá bằng trình quản lý ngữ cảnh 8. Tuy nhiên, 1 cho phép tôi làm điều đó ở đây mà không cần tạo thêm các khối 5 lồng nhau
Trình quản lý bối cảnh 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 thập 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.
Chức năng __ 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 nội dung của "câu lệnh with" (PEP . câu lệnh with có ý định ẩn điều khiển luồng của mệnh đề try last và làm cho mã trở nên khó hiểu.
3 loại câu lệnh điều kiện * của Python là gì?Python có 3 câu lệnh điều kiện chính mà bạn nên biết. . câu lệnh if câu lệnh if-else thang if-elif-else Sự khác biệt giữa trình quản lý ngữ cảnh và trình trang trí trong Python là gì?trình quản lý bối cảnh là các đối tượng được sử dụng với python với từ khóa. Nó chạy mã khi vào khối và thoát khỏi khối. decorators là những sửa đổi đối với một hàm hoặc định nghĩa lớp. Nó chạy mã thay thế chức năng như nó đang được xác định |