目錄
1.with關(guān)鍵字?
2.上下文管理器?
3.總結(jié)
?4.with torch.no_grad()的用法
在Python中,with是一個關(guān)鍵字,用于處理上下文管理器(context manager)。上下文管理器是一種對象,它定義了在進(jìn)入和離開某個上下文時應(yīng)該執(zhí)行的操作。with?語句使代碼更清晰、更具可讀性, 它簡化了文件流等公共資源的管理。
1.with關(guān)鍵字?
Python 中的?with?語句用于異常處理,封裝了?try…except…finally?編碼范式,提高了易用性。
菜鳥教程的例子就很生動:?
Python with 關(guān)鍵字 | 菜鳥教程 (runoob.com)
?
2.上下文管理器?
這部分內(nèi)容參考:【Python】with關(guān)鍵字詳解_python with關(guān)鍵字_InceptionZ的博客-CSDN博客
拿文件操作舉例,打開文件就相當(dāng)于上文,操作文件就相當(dāng)于文中,關(guān)閉文件就相當(dāng)于下文。
上下文管理器:上下文管理器本質(zhì)就是能夠支持with操作的類或?qū)ο蟆H魏螌?shí)現(xiàn)了__ enter __ ()和__ exit __()方法的類對象對可以稱之為上下文管理器。上下文管理器對象可以使用with關(guān)鍵字對上下文管理,顯然,文件(file對象)也實(shí)現(xiàn)了上下文管理協(xié)議(上面的兩個方法)
自定義上下文管理器:
class MyFile():
# 1. __init__() 初始化方法
def __init__(self,file_name,file_mode):
self.file_name = file_name
self.file_mode = file_mode
# 2. __enter__() 上文方法
def __enter__(self):
print("進(jìn)入上文")
self.file = open(self.file_name,self.file_mode)
return self.file
# 3. __exit__() 下文方法
def __exit__():
print("進(jìn)入下文")
self.file.close()
# hello.txt為自己定義的文件
# file 并不是MyFile的一個對象,而是上文__enter__函數(shù)返回的內(nèi)容,是一種資源
with MyFile('hello.txt','r') as file:
file_data = file.read()
print(file_data)
# result
進(jìn)入上文
這里是你文件里的內(nèi)容
進(jìn)入下文
3.總結(jié)
with 語句實(shí)現(xiàn)原理建立在上下文管理器之上。上下文管理器是一個實(shí)現(xiàn)?__enter__?和?__exit__?方法的類。使用 with 語句確保在嵌套塊的末尾調(diào)用 __exit__ 方法。這個概念類似于 try...finally 塊的使用。
總結(jié)with工作原理:
(1)緊跟with后面的語句被求值后,返回對象的“–enter–()”方法被調(diào)用,這個方法的返回值將被賦值給as后面的變量;
(2)當(dāng)with后面的代碼塊全部被執(zhí)行完之后,將調(diào)用前面返回對象的“–exit–()”方法。
?如果覺得上面的總結(jié)抽象,再看如下實(shí)例就能理解了:
?4.with torch.no_grad()的用法
按如下順序閱讀即可:
(1條消息) 【pytorch系列】 with torch.no_grad():用法詳解_大黑山修道的博客-CSDN博客
(6條消息) 什么時候該用with torch.no_grad()?什么時候該用.requires_grad ==False?_no_grad grad_zero_Y. F. Zhang的博客-CSDN博客?最后在看一下這個:
pytorch autograd backward函數(shù)中 retain_graph參數(shù)的作用,簡單例子分析,以及create_graph參數(shù)的作用 - yangyuwen_yang - 博客園 (cnblogs.com)
?文章來源地址http://www.zghlxwxcb.cn/news/detail-560534.html
?文章來源:http://www.zghlxwxcb.cn/news/detail-560534.html
?
到了這里,關(guān)于【python基礎(chǔ)】python中的with關(guān)鍵字及其相關(guān)用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!