mysql with as 用法_Python之图解with语句
生活随笔
收集整理的這篇文章主要介紹了
mysql with as 用法_Python之图解with语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在我們使用Python的時候,常使用到如下的代碼塊:
# 文件讀取 with open(file, 'r') as f:# CODE BLOCK ## 梯度計算 with tf.GradientTape() as g:# CODE BLOCK #在很多場景中,使用with語句來可以讓我們可以更好地來管理資源和簡化代碼,它可以看做是對try/finally模式的簡化。它原理上是利用了上下文管理器,下文簡要介紹將對其執行原理和自定義的方法。
概念
上下文管理協議(Context Management Protocol)
包含方法 __enter__() 和 __exit__() ,支持該協議的對象要實現這兩個方法。
上下文管理器(Context Manager)
支持上下文管理協議的對象,這種對象必須實現 __enter__() 和 __exit__() 方法。
上下文管理器定義執行with語句時要建立的運行時上下文,負責執行with語句塊上下文中的進入與退出操作。
通常使用with語句調用上下文管理器,也可以通過直接調用其方法來使用。
- __enter__()
- with語句執行時,先獲取上下文管理器對象,隨后調用其 __enter__()
- 若有 as var 語句,則將返回值賦給變量var
- 可以返回上下文管理器對象本身,也可以是其他相關對象
- __exit__()
- 帶有三個參數 exc_type, exc_val, exc_tb
- 若上下文管理器對象執行無異常,則三個參數均為 None
- 若發生異常,則三個參數分別為 異常類型,異常值和tracback信息
原理
# EXP: 表達式 # VAR: 變量名,[as VAR][可選] # BlOCK: 代碼塊with EXP as VAR:BLOCKwith語句原理自定義上下文管理器
- 它使代碼更簡練,可以簡化try/finally模式
- 當代碼異常產生時,__exit__() 會執行清理工作
- 可以對軟件系統中的資源進行管理,比如數據庫連接、共享資源的訪問控制等
本例僅對應代碼正常執行的流程,其他特殊情況不再一一列舉,有興趣可單獨實驗。
參考
淺談 Python 的 with 語句Python中with用法詳解
Python中with使用
總結
以上是生活随笔為你收集整理的mysql with as 用法_Python之图解with语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java getdelay_java中D
- 下一篇: java 递归遍历对象所有属性_Java