亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

python中用with關(guān)鍵字來實(shí)現(xiàn)上下文管理器.

Pocher / 3287人閱讀

摘要:例子語句的語法什么語句可以作為變量是在哪里定義的呢應(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 ]:
     
     
什么語句可以作為, 變量是在哪里定義的呢?

應(yīng)該返回一個(gè)上下文管理器,所謂上下文管理器就是任何一個(gè)實(shí)現(xiàn)了 __enter__(self) ,和__exit__(self, *unused)方法的class的實(shí)例.

__enter__(self)對(duì)象中返回的內(nèi)容會(huì)被賦值給變量

直接用類進(jìn)行構(gòu)造的構(gòu)造函數(shù)
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

相關(guān)文章

  • 生成進(jìn)化到協(xié)程 Part 2

    摘要:一個(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 主要描述了如...

    fuyi501 評(píng)論0 收藏0
  • python高級(jí)特性

    摘要:常規(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 ...

    yexiaobai 評(píng)論0 收藏0
  • Python有什么好學(xué)的》之下文管理

    摘要:引上下文管理器太極生兩儀,兩儀為陰陽。而最常用的則是,即上下文管理器使用上下文管理器用之后的文件讀寫會(huì)變成我們看到用了之后,代碼沒有了創(chuàng)建,也沒有了釋放。實(shí)現(xiàn)上下文管理器我們先感性地對(duì)進(jìn)行猜測(cè)?,F(xiàn)實(shí)一個(gè)上下文管理器就是這么簡(jiǎn)單。 Python有什么好學(xué)的這句話可不是反問句,而是問句哦。 主要是煎魚覺得太多的人覺得Python的語法較為簡(jiǎn)單,寫出來的代碼只要符合邏輯,不需要太多的學(xué)習(xí)即可...

    qpwoeiru96 評(píng)論0 收藏0
  • Python中的下文管理和else塊

    摘要:上下文管理器協(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...

    Michael_Lin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<