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