国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python 上下文管理器 with 語句

這篇具有很好參考價值的文章主要介紹了python 上下文管理器 with 語句。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

上下文管理器 with 語句可以自動地分配和釋放資源。

讀寫文件

這篇文章中介紹了文件讀寫的方法,每次讀取文件時要使用 open() 函數(shù)打開文件,使用結(jié)束后要用 close() 函數(shù)關(guān)閉文件。有時,我們會忘記關(guān)閉文件,或者打開了許多文件占用太多資源。使用上下文管理器 with 語句可以方便地讀取文件,它會自動地釋放文件。

with open('test.txt') as f:
	f.read()

with 語句后可進(jìn)行文件操作,它會自動關(guān)閉文件,而不用去調(diào)用 close() 函數(shù)。

基于類的上下文管理器

用類創(chuàng)建上下文管理器,需要包括 __enter__() 方法,返回需要被管理地資源,也要包括 __exit__() 方法,保存一些釋放、清理資源的操作。

class Manager():
	def __init__(self):
		pass
	def __enter__(self):
		pass
	def __exit__(self, exc_type, exc_val, exc_tb):
		pass

__exit__() 方法中的參數(shù)分別表示 exception_type、exception_value 和 traceback,當(dāng)執(zhí)行 with 語句時,如果有異常拋出,異常的信息就會包含在這三個變量中,傳入方法 __exit__(),這樣就可以在該方法中處理異常了。如果確定異常已經(jīng)被處理了,請在 __exit__() 的最后,加上 return True 這條語句,否則異常仍然會被拋出。

with Manager() as f:
	pass

當(dāng)使用 with 語句創(chuàng)建上下文管理器時,首先會調(diào)用 __init__() 函數(shù)創(chuàng)建對象;其次調(diào)用 __enter__() 函數(shù),返回的 Manager 對象賦值給變量 f,再進(jìn)行 with 下的操作;最后調(diào)用 __exit__() 語句釋放資源。

基于生成器的上下文管理器

@contextmanager
def manager(name, mode):
	try:
		f = open(name, mode)
		yield f
	finally:
		f.close()

with manager('test.txt', 'w') as f:
	pass

這段代碼中 manager 即是一個生成器,with 語句會打開文件,返回文件對象 f,結(jié)束后關(guān)閉文件。務(wù)必加上裝飾器 @contextmanager文章來源地址http://www.zghlxwxcb.cn/news/detail-408386.html

到了這里,關(guān)于python 上下文管理器 with 語句的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Python教程(27)——如何使用Python中的上下文管理器

    當(dāng)我們在編寫代碼時,經(jīng)常會遇到需要管理資源的情況,比如打開和關(guān)閉文件,如果遇到了一些異常情況,我們需要關(guān)閉資源,不然會導(dǎo)致資源泄露,雖然我們可以通過手動的方式來關(guān)閉,但如果有多個異常情況需要考慮的話,萬一不小心漏了一處,就芭比Q了。所以,如果有

    2024年02月19日
    瀏覽(23)
  • 【 Python 全棧開發(fā) - WEB開發(fā)篇 - 38 】property和上下文管理器

    Python 是一個簡潔而強(qiáng)大的編程語言,通過提供各種特性和工具,使開發(fā)人員能夠更高效地進(jìn)行編程。其中一個非常有用的特性是 @property 裝飾器,它允許我們在類中定義屬性并自定義其行為。 @property 裝飾器用于將一個方法轉(zhuǎn)換為類的屬性。使用 @property 裝飾器,我們可以像訪

    2024年02月13日
    瀏覽(36)
  • 無限上下文,多級內(nèi)存管理!突破ChatGPT等大語言模型上下文限制

    無限上下文,多級內(nèi)存管理!突破ChatGPT等大語言模型上下文限制

    目前,ChatGPT、Llama 2、文心一言等主流大語言模型,因技術(shù)架構(gòu)的問題上下文輸入一直受到限制,即便是Claude 最多只支持10萬token輸入,這對于解讀上百頁報告、書籍、論文來說非常不方便。 為了解決這一難題,加州伯克利分校受操作系統(tǒng)的內(nèi)存管理機(jī)制啟發(fā),提出了MemGPT。

    2024年02月06日
    瀏覽(26)
  • 【python】flask執(zhí)行上下文context,請求上下文和應(yīng)用上下文原理解析

    【python】flask執(zhí)行上下文context,請求上下文和應(yīng)用上下文原理解析

    ?? 歡迎大家來到景天科技苑?? ???? 養(yǎng)成好習(xí)慣,先贊后看哦~???? ?? 作者簡介:景天科技苑 ??《頭銜》:大廠架構(gòu)師,華為云開發(fā)者社區(qū)專家博主,阿里云開發(fā)者社區(qū)專家博主,CSDN新星創(chuàng)作者,掘金優(yōu)秀博主,51CTO博客專家等。 ??《博客》:Python全棧,前后端開

    2024年03月26日
    瀏覽(22)
  • Zustand 和 React 上下文狀態(tài)管理

    Zustand 和 React 上下文狀態(tài)管理

    Zustand 是客戶端全局狀態(tài)管理的一個很棒的庫。它簡單、快速,并且包大小小。然而,有一件事我不一定喜歡它:這些 Store 是全局性的。 但這不是全局狀態(tài)管理的重點(diǎn)嗎?要使該狀態(tài)在您的應(yīng)用程序中隨處可用。不過當(dāng)我回顧過去幾年中使用 zustand 的情況時,我意識到,更多

    2024年04月25日
    瀏覽(22)
  • pymysql 上下文管理器控制事務(wù)提交和回滾

    示例: 從上面例子看出, 在with結(jié)構(gòu)進(jìn)入時,事務(wù)開始begin 在with結(jié)構(gòu)退出時,會根據(jù)是否產(chǎn)生異常進(jìn)行commit和rollback操作,并關(guān)閉連接

    2024年01月25日
    瀏覽(29)
  • (二十)Flask之上下文管理第一篇(粗糙縷一遍源碼)

    (二十)Flask之上下文管理第一篇(粗糙縷一遍源碼)

    ????作者介紹:【孤寒者】—CSDN全棧領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、HDZ核心組成員、華為云享專家Python全棧領(lǐng)域博主、CSDN原力計劃作者 ???? 本文已收錄于Flask框架從入門到實(shí)戰(zhàn)專欄 :《Flask框架從入門到實(shí)戰(zhàn)》 ???? 熱門專欄推薦 :《Python全棧系列教程》、《Django框架從入門到實(shí)戰(zhàn)

    2024年01月19日
    瀏覽(22)
  • 超長上下文處理:基于Transformer上下文處理常見方法梳理

    超長上下文處理:基于Transformer上下文處理常見方法梳理

    原文鏈接:芝士AI吃魚 目前已經(jīng)采用多種方法來增加Transformer的上下文長度,主要側(cè)重于緩解注意力計算的二次復(fù)雜度。 例如,Transformer-XL通過緩存先前的上下文,并允許隨著層數(shù)的增加線性擴(kuò)展上下文。Longformer采用了一種注意力機(jī)制,使得token稀疏地關(guān)注遠(yuǎn)距離的token,從而

    2024年02月13日
    瀏覽(24)
  • 從零開始理解Linux中斷架構(gòu)(7)--- Linux執(zhí)行上下文之中斷上下文

    從零開始理解Linux中斷架構(gòu)(7)--- Linux執(zhí)行上下文之中斷上下文

    ????????當(dāng)前運(yùn)行的loop是一條執(zhí)行流,中斷程序運(yùn)行開啟了另外一條執(zhí)行流,從上一節(jié)得知這是三種跳轉(zhuǎn)的第三類,這個是一個大跳轉(zhuǎn)。對中斷程序的基本要求就是 中斷執(zhí)行完畢后要恢復(fù)到原來執(zhí)行的程序 ,除了時間流逝外,原來運(yùn)行的程序應(yīng)該毫無感知。 ???????

    2024年02月11日
    瀏覽(40)
  • 〖大前端 - 基礎(chǔ)入門三大核心之JS篇(51)〗- 面向?qū)ο笾J(rèn)識上下文與上下文規(guī)則

    〖大前端 - 基礎(chǔ)入門三大核心之JS篇(51)〗- 面向?qū)ο笾J(rèn)識上下文與上下文規(guī)則

    說明:該文屬于 大前端全棧架構(gòu)白寶書專欄, 目前階段免費(fèi) , 如需要項目實(shí)戰(zhàn)或者是體系化資源,文末名片加V! 作者:哈哥撩編程,十余年工作經(jīng)驗(yàn), 從事過全棧研發(fā)、產(chǎn)品經(jīng)理等工作,目前在公司擔(dān)任研發(fā)部門CTO。 榮譽(yù): 2022年度博客之星Top4、2023年度超級個體得主、谷

    2024年02月05日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包