上下文管理器與 with 語句
1、概念
上下文管理協議(Context Management Protocol):包含enter()和exit()方法,支援該協議的物件要實現這兩個方法
上下文管理器(Context Manager):支援上下文管理協議的物件
使用with語句呼叫上下文管理器,來構建對資源的自動建立和釋放
2、with語句基本語法
with expression [as variable]:
with-block
3、上下文管理器
class Context:
def __enter__(self):
print("enter方法")
def __exit__(self, exc_type, exc_val, exc_tb):
print("exit方法")
with Context() as c:
print(c)
執行原理如下:
1、執行Context(),返回一個上下文管理器物件
2、自動呼叫上下文管理器的enter方法,如果使用了as子句,則將enter()方法的返回值賦值給as子句中的c
3、執行with中的程式碼塊
4、不論執行過程中是否發生異常,都會執行上下文管理器中的exit()方法,exit方法負責清理工作。如果執行過程中沒有異常,則以None作為引數呼叫exit;
如果執行過程中發生了異常,則使用exit(exc_type, exc_val, exc_tb)呼叫
相關文章
- flask之控制語句 if 語句與for語句Flask
- 完全理解關鍵字”with”與上下文管理器
- 完全理解關鍵字"with"與上下文管理器
- Pyhton提高:with上下文管理器
- ORACLE 資料庫 查詢語句與DML語句Oracle資料庫
- Python深入02 上下文管理器Python
- Python分享之上下文管理器Python
- Python中的上下文管理器Python
- Oracle sql with 語句語法與例子OracleSQL
- PL/SQL與DDL語句SQL
- Python 簡單理解 with 上下文管理器Python
- Python - Context Manager 上下文管理器PythonContext
- ORACLE UPDATE 語句語法與效能分析Oracle
- JavaScript break與continue語句JavaScript
- MySql與Sql Server Update語句MySqlServer
- python黑魔法---上下文管理器(contextor)PythonContext
- DDD中限界上下文與通用語言的作用
- 全網最適合入門的物件導向程式設計教程:26 類和物件的 Python 實現-上下文管理器和 with 語句物件程式設計Python
- Python中表示式與語句Python
- SQL語句與正規表示式SQL
- SQL Profiles與語句最佳化SQL
- python上下文管理器closing的應用Python
- Python上下文管理器你學會了嗎?Python
- with open() as 的用法 和 with上下文管理器(Context manager)Context
- Python 快速教程(深入篇02):上下文管理器Python
- if語句
- Python條件語句與迴圈Python
- JavaScript switch與if else語句的區別JavaScript
- 查詢阻塞與被阻塞SQL語句SQL
- 什麼是Python中Context上下文管理器PythonContext
- makefile--if條件判斷語句的語法與使用
- 【SQL】14 UNION 操作符、SELECT INTO 語句、INSERT INTO SELECT 語句、CREATE DATABASE 語句、CREATE TABLE 語句SQLDatabase
- 《Python有什麼好學的》之上下文管理器Python
- Python 的上下文管理器是怎麼設計的?Python
- 談一談Python的上下文管理器 – 思誠之道Python
- Java學習之分支結構---判斷語句:if語句和switch語句Java
- Matlab的if語句switch語句for迴圈while迴圈語句練習MatlabWhile
- 日期與字串的互相轉換SQL語句字串SQL