日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python中with的用法_python 中 with的用法

發(fā)布時(shí)間:2024/7/19 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中with的用法_python 中 with的用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

with 語句使用于對(duì)資源進(jìn)行訪問的場(chǎng)合,確保不管使用過程是否發(fā)生異常都會(huì)執(zhí)行必要的"清理"操作,釋放資源,比如文件使用后自動(dòng)關(guān)閉/線程中鎖的自動(dòng)獲取和釋放

with open("1.txt") as file:

data = file.read()

使用with,能夠減少冗長(zhǎng),還能自動(dòng)處理上下文環(huán)境產(chǎn)生的異常

with 工作原理

(1)緊跟with后面的語句被求值后,返回對(duì)象的__enter__()方法被調(diào)用,這個(gè)方法的返回值將被賦值給as后面的變量;

(2)當(dāng)with后面的代碼塊全部被執(zhí)行完之后,將調(diào)用前面返回對(duì)象的__exit__()方法。

with工作原理代碼示例:

class Sample:

def __enter__(self):

print("進(jìn)入 with")

return self

def __exit__(self, exc_type, exc_val, exc_tb):

print("退出 with")

def xxx(self):

print('讀取文件')

with Sample() as sample:

print("__enter__的返回值: ", sample)

sample.xxx()

結(jié)果

進(jìn)入 with

__enter__的返回值: <__main__.sample object at>

讀取文件

退出 with

可以看到,整個(gè)運(yùn)行過程如下:

(1)__enter__()方法被執(zhí)行;

(2)__enter__()方法的返回值,在這個(gè)例子中是self,賦值給變量sample;

(3)執(zhí)行代碼塊,__enter__的返回值: <__main__.sample object at>;

( 4 )執(zhí)行方法 xxx()

( 5 )__exit__()方法被調(diào)用;

【注:】exit()方法中有3個(gè)參數(shù), exc_type, exc_val, exc_tb,這些參數(shù)在異常處理中相當(dāng)有用。

exc_type: 錯(cuò)誤的類型

exc_val: 錯(cuò)誤類型對(duì)應(yīng)的值

exc_tb: 代碼中錯(cuò)誤發(fā)生的位置

總結(jié)

實(shí)際上,在with后面的代碼塊拋出異常時(shí),exit()方法被執(zhí)行。開發(fā)庫(kù)時(shí),清理資源,關(guān)閉文件等操作,都可以放在exit()方法中。

總之,with-as表達(dá)式極大的簡(jiǎn)化了每次寫finally的工作,這對(duì)代碼的優(yōu)雅性是有極大幫助的。

如果有多項(xiàng),可以這樣寫:

With open('1.txt') as f1, open('2.txt') as f2:

do something

總結(jié)

以上是生活随笔為你收集整理的python中with的用法_python 中 with的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。