Python中的with...as用法介紹
這個(gè)語法是用來代替?zhèn)鹘y(tǒng)的try...finally語法的。
with EXPRESSION [ as VARIABLE] WITH-BLOCK
基本思想是with所求值的對(duì)象必須有一個(gè)__enter__()方法,一個(gè)__exit__()方法。
緊跟with后面的語句被求值后,返回對(duì)象的__enter__()方法被調(diào)用,這個(gè)方法的返回值將被賦值給as后面的變量。當(dāng)with后面的代碼塊全部被執(zhí)行完之后,將調(diào)用前面返回對(duì)象的__exit__()方法。
file = open("/tmp/foo.txt")
try:
data = file.read()
finally:
file.close()
使用with...as...的方式替換,修改后的代碼是:
with open("/tmp/foo.txt") as file:
data = file.read()
#!/usr/bin/env python
# with_example01.py
class Sample:
def __enter__(self):
print "In __enter__()"
return "Foo"
def __exit__(self, type, value, trace):
print "In __exit__()"
def get_sample():
return Sample()
with get_sample() as sample:
print "sample:", sample
執(zhí)行結(jié)果為
In __enter__()
sample: Foo
In __exit__()
1. __enter__()方法被執(zhí)行
2. __enter__()方法返回的值 - 這個(gè)例子中是"Foo",賦值給變量'sample'
3. 執(zhí)行代碼塊,打印變量"sample"的值為 "Foo"
4. __exit__()方法被調(diào)用with真正強(qiáng)大之處是它可以處理異常。可能你已經(jīng)注意到Sample類的__exit__方法有三個(gè)參數(shù)- val, type 和 trace。這些參數(shù)在異常處理中相當(dāng)有用。我們來改一下代碼,看看具體如何工作的。
相關(guān)文章
python實(shí)現(xiàn)雙人版坦克大戰(zhàn)游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)雙人版坦克大戰(zhàn)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Django+Vue實(shí)現(xiàn)文件上傳下載的項(xiàng)目實(shí)踐
本文主要介紹了Django+Vue實(shí)現(xiàn)文件上傳下載的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06python基于win32api實(shí)現(xiàn)鍵盤輸入
這篇文章主要介紹了python基于win32api實(shí)現(xiàn)鍵盤輸入,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-12-12python 自動(dòng)識(shí)別并連接串口的實(shí)現(xiàn)
這篇文章主要介紹了python 自動(dòng)識(shí)別并連接串口的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01Python subprocess模塊功能與常見用法實(shí)例詳解
這篇文章主要介紹了Python subprocess模塊功能與常見用法,結(jié)合實(shí)例形式詳細(xì)分析了subprocess模塊功能、常用函數(shù)相關(guān)使用技巧,需要的朋友可以參考下2018-06-06Python編寫電話薄實(shí)現(xiàn)增刪改查功能
這篇文章主要為大家詳細(xì)介紹了Python編寫電話薄實(shí)現(xiàn)增刪改查功能的相關(guān)資料,感興趣的朋友可以參考一下2016-05-05使用OpenCV對(duì)運(yùn)動(dòng)員的姿勢(shì)進(jìn)行檢測功能實(shí)現(xiàn)
2022年奧林匹克運(yùn)動(dòng)會(huì)如期舉行,以不正確的方式進(jìn)行運(yùn)動(dòng)風(fēng)險(xiǎn)在增加,人體姿勢(shì)估計(jì)是計(jì)算機(jī)視覺領(lǐng)域的重要問題,接下來通過本文給大家介紹下使用OpenCV對(duì)運(yùn)動(dòng)員的姿勢(shì)進(jìn)行檢測功能,感興趣的朋友一起看看吧2022-02-02python 如何在list中找Topk的數(shù)值和索引
這篇文章主要介紹了python 如何在list中找Topk的數(shù)值和索引的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05舉例詳解Python中的split()函數(shù)的使用方法
這篇文章主要介紹了舉例詳解Python中的split()函數(shù)的使用方法,split()函數(shù)的使用是Python學(xué)習(xí)當(dāng)中的基礎(chǔ)知識(shí),通常用于將字符串切片并轉(zhuǎn)換為列表,需要的朋友可以參考下2015-04-04