摘要:例子語句的語法什么語句可以作為變量是在哪里定義的呢應(yīng)該返回一個(gè)上下文管理器所謂上下文管理器就是任何一個(gè)實(shí)現(xiàn)了和方法的的實(shí)例在對(duì)象中返回的內(nèi)容會(huì)被賦值給變量直接用類進(jìn)行構(gòu)造的構(gòu)造函數(shù)也可以用工廠方法建立以為例通常是調(diào)用方法建立的的實(shí)例的而在
例子
with open(r"somefileName") as somefile: for line in somefile: print line
with 語句的語法
with什么語句可以作為[as ]:
在 __enter__(self)對(duì)象中返回的內(nèi)容會(huì)被賦值給
class PypixContextManagerDemo: def __enter__(self): print "Entering the block" def __exit__(self, *unused): print "Exiting the block" with PypixContextManagerDemo(): print "In the block"也可以用工廠方法建立
以MySQLdb為例,通常是調(diào)用MySQLdb.Connect方法建立的Connection的實(shí)例的.而在MySQLdb中Connect方法是這樣實(shí)現(xiàn)的.
def Connect(*args, **kwargs): """Factory function for connections.Connection.""" from MySQLdb.connections import Connection return Connection(*args, **kwargs)
而在Connection類中實(shí)現(xiàn)了__enter__(self) ,和__exit__(self, *unused)方法
class Connection(_mysql.connection): ..................... def __enter__(self): if self.get_autocommit(): self.query("BEGIN") return self.cursor() def __exit__(self, exc, value, tb): if exc: self.rollback() else: self.commit()
注意__enter__方法直接返回了cursor對(duì)象,因此as后跟的就是一個(gè)cursor對(duì)象
with MySQLdb.connect(kwargs=Mysqldb_kwargs) as ins_cursor: ins_cursor.execute("select * from user")
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/37885.html
摘要:一個(gè)典型的上下文管理器類如下處理異常正如方法名明確告訴我們的,方法負(fù)責(zé)進(jìn)入上下的準(zhǔn)備工作,如果有需要可以返回一個(gè)值,這個(gè)值將會(huì)被賦值給中的??偨Y(jié)都是關(guān)于上下文管理器的內(nèi)容,與協(xié)程關(guān)系不大。 Part 1 傳送門 David Beazley 的博客 PPT 下載地址 在 Part 1 我們已經(jīng)介紹了生成器的定義和生成器的操作,現(xiàn)在讓我們開始使用生成器。Part 2 主要描述了如...
摘要:常規(guī)的使用來統(tǒng)計(jì)一段代碼運(yùn)行時(shí)間的例子輸出結(jié)果總結(jié)其實(shí)是一門特別人性化的語言,但凡在工程中經(jīng)常遇到的問題,處理起來比較棘手的模式基本都有對(duì)應(yīng)的比較優(yōu)雅的解決方案。 python的高級(jí)特性 名詞與翻譯對(duì)照表 generator 生成器 iterator 迭代器 collection 集合 pack/unpack 打包/解包 decorator 裝飾器 context manager ...
摘要:引上下文管理器太極生兩儀,兩儀為陰陽。而最常用的則是,即上下文管理器使用上下文管理器用之后的文件讀寫會(huì)變成我們看到用了之后,代碼沒有了創(chuàng)建,也沒有了釋放。實(shí)現(xiàn)上下文管理器我們先感性地對(duì)進(jìn)行猜測(cè)?,F(xiàn)實(shí)一個(gè)上下文管理器就是這么簡(jiǎn)單。 Python有什么好學(xué)的這句話可不是反問句,而是問句哦。 主要是煎魚覺得太多的人覺得Python的語法較為簡(jiǎn)單,寫出來的代碼只要符合邏輯,不需要太多的學(xué)習(xí)即可...
摘要:上下文管理器協(xié)議包含和兩個(gè)方法。因此必要時(shí)在上下文管理器函數(shù)中使用語句防范錯(cuò)誤。構(gòu)建臨時(shí)忽略指定異常的上下文管理器。這是個(gè)基類,用于定義基于類的上下文管理器。塊結(jié)束時(shí),按照后進(jìn)先出的順序調(diào)用棧中各個(gè)上下文管理器的方法。 導(dǎo)語:本文章記錄了本人在學(xué)習(xí)Python基礎(chǔ)之控制流程篇的重點(diǎn)知識(shí)及個(gè)人心得,打算入門Python的朋友們可以來一起學(xué)習(xí)并交流。 本文重點(diǎn): 1、掌握if語句之外的el...
閱讀 3083·2021-11-24 10:21
閱讀 1690·2021-10-11 10:57
閱讀 2867·2021-09-22 15:24
閱讀 2760·2021-09-22 14:58
閱讀 2388·2019-08-30 13:16
閱讀 3572·2019-08-29 13:05
閱讀 3472·2019-08-29 12:14
閱讀 3525·2019-08-27 10:55