本文主要是給大家介紹了python上下面管理工具適用場景及錯誤處理實例詳細說明,感興趣的小伙伴可以參考去了解一下,希望可以有一定的幫助,祝愿大家多多的發展,盡早漲薪
前言
應用前后文管理工具,能讓編碼更為雅致簡約。自然,前后文的管理工具的功效不僅于此,它內部進行體制,能夠很好地解決編碼出現異常,提高編碼的復用性
1、先看一下最典型的例子,with句子
#創建一個文件載入字符串數組“Python” f=open('123.txt','w') f.write("python") f.close() #使用with句子啟用前后文進行文件寫入實際操作 withopen('123.txt','w')asf: f.write('python')
2、什么叫前后文管理工具?
前后文是context直接翻譯的稱呼,在系統中用于表明編碼實施過程中所處前后左右自然環境,例如在文件操作時,文檔必須打開關閉,而文檔讀寫操作就處在文件操作的前后文環境里;
前后文管理工具,前后文管理工具指的是在這段執行命令以前,實行某些預備處理工作,執行命令以后再執行某些清潔工作。
前后文管理工具中有enter()和exit()2個方式,enter()方式在實施with后邊的句子時實行,通常用于解決操作前內容,特別是一些創建對象,復位等;exit()方式在with里的執行命令完成后實行,通常用于解決某些善后處理掃尾工作,例如文件信息關掉,數據庫關掉等。
3、前后文管理工具的基本原理全過程如下所示:
調用enter()方式,開展預備處理實際操作
實行客戶實際操作
調用exit()方式,進行清除實際操作
4、前后文管理工具的應用領域:
資源優化配置作用,即文件整理、數據連接、數據庫服務器等行為的時候需要關掉網絡資源。
還可以在執行命令前后左右提升作用,類似裝飾器,例如編碼之前做過權限驗證等。
4.1數據庫連接
import pymysql class DBConnection(object): def __init__(self,ip,user,passwd,db): self.ip=ip self.user=user self.passwd=passwd self.db=db def __enter__(self): self.conn=pymysql.connect(self.ip,user=self.user,passwd=self.passwd,db=self.db) self.cur=conn.cursor() return self.cur def __exit__(self,exc_type,exc_val,exc_tb): self.cur.close() self.conn.close() with DBConnection('192.168.121.xxx',user="xxx",passwd="123456",db="xxx")as cur: cur.execute("select*from studnet;") result=cur.fetchall() print(result)
完成DBConnection這個類,每次連接數據庫時,只要簡單的調用with語句即可,不需要關心數據庫的關閉、異常等
4.2上下文管理器的異常處理
class MyOpen(object): """自定義上下文管理類""" def __init__(self,file,mode): self._file=file self._mode=mode def __enter__(self): self._handle=open(self._file,self._mode) return self._handle def __exit__(self,exc_type,exc_val,exc_tb): #print('Type:',exc_type) #print('Value:',exc_val) #print('TreacBack:',exc_tb) self._handle.close() print("異常已被處理") return True #讀的模式打開文件,進行寫操作,不支持 with MyOpen('123.txt','r')as f: f.write('python') #輸出: 異常已被處理 with語法不僅可以簡化資源操作的后續清除操作,還可以代替try/finally進行異常處理 當with中執行的語句發生異常時,異常信息會被發送到exit()方法的參數中,exit()方法有如下三個參數: exc_type:異常類型 exc_val:異常值 exc_tb:異常回溯追蹤
這三個參數都與異常有關,with語句會把異常的exc_type,exc_val和exc_tb傳遞給exit()方法,它讓exit()方法來處理異常,如果exit()返回的是True,那么這個異常就被忽略,并按照我們定義的方式進行拋出。如果exit()返回的是True以外的任何東西,那么這個異常將被with語句拋出。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/129059.html
摘要:下文統一稱為數組是存儲單一數據類型的多維數組同語言數組直接保存數值而則是能夠對數組進行處理的函數。動態數據類型與的數組和的這些不可變數據類型的適用場景等可變數據類型適用于需要不斷對原始數據進行修改的場景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一個矩陣計算包,功能類似ma...
摘要:接口測試結果歸類分析方法基于接口測試結果模型化和組織級的錯誤碼庫非缺陷知識庫,本專利的方法及裝置將接口測試的結果分類分析,輸出概要表和錯誤分類表。 詳細介紹技術背...
摘要:月日,第六屆大會在深圳召開。這是這次大會的第二站活動,第一站已在上海成功舉辦。深圳站視頻及,請在公眾號后臺回復,獲取分享鏈接。據介紹,目前支持多種開發庫,如內置和等。該協議的推出,是為了統一標準,提高效率。 本文為 PyChina 和「編程派」聯合首發,作者為 EarlGrey。「編程派」是一個專注 Python 學習交流的微信公眾號。 9 月 25 日,第六屆 PyCon China...
閱讀 919·2023-01-14 11:38
閱讀 891·2023-01-14 11:04
閱讀 750·2023-01-14 10:48
閱讀 2039·2023-01-14 10:34
閱讀 956·2023-01-14 10:24
閱讀 834·2023-01-14 10:18
閱讀 506·2023-01-14 10:09
閱讀 583·2023-01-14 10:02