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