国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

python中用with關鍵字來實現上下文管理器.

Pocher / 3248人閱讀

摘要:例子語句的語法什么語句可以作為變量是在哪里定義的呢應該返回一個上下文管理器所謂上下文管理器就是任何一個實現了和方法的的實例在對象中返回的內容會被賦值給變量直接用類進行構造的構造函數也可以用工廠方法建立以為例通常是調用方法建立的的實例的而在

例子
with open(r"somefileName") as somefile:
     for line in somefile:
            print line

with 語句的語法

with  [as ]:
     
     
什么語句可以作為, 變量是在哪里定義的呢?

應該返回一個上下文管理器,所謂上下文管理器就是任何一個實現了 __enter__(self) ,和__exit__(self, *unused)方法的class的實例.

__enter__(self)對象中返回的內容會被賦值給變量

直接用類進行構造的構造函數
class PypixContextManagerDemo:
    def __enter__(self):
        print "Entering the block"
    def __exit__(self, *unused):
        print "Exiting the block"
with PypixContextManagerDemo():
    print "In the block"
也可以用工廠方法建立

以MySQLdb為例,通常是調用MySQLdb.Connect方法建立的Connection的實例的.而在MySQLdb中Connect方法是這樣實現的.

def Connect(*args, **kwargs):
    """Factory function for connections.Connection."""
    from MySQLdb.connections import Connection
    return Connection(*args, **kwargs)

而在Connection類中實現了__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對象,因此as后跟的就是一個cursor對象

with MySQLdb.connect(kwargs=Mysqldb_kwargs) as ins_cursor:
        ins_cursor.execute("select * from user")

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/37885.html

相關文章

  • 生成進化到協程 Part 2

    摘要:一個典型的上下文管理器類如下處理異常正如方法名明確告訴我們的,方法負責進入上下的準備工作,如果有需要可以返回一個值,這個值將會被賦值給中的。總結都是關于上下文管理器的內容,與協程關系不大。 Part 1 傳送門 David Beazley 的博客 PPT 下載地址 在 Part 1 我們已經介紹了生成器的定義和生成器的操作,現在讓我們開始使用生成器。Part 2 主要描述了如...

    fuyi501 評論0 收藏0
  • python高級特性

    摘要:常規的使用來統計一段代碼運行時間的例子輸出結果總結其實是一門特別人性化的語言,但凡在工程中經常遇到的問題,處理起來比較棘手的模式基本都有對應的比較優雅的解決方案。 python的高級特性 名詞與翻譯對照表 generator 生成器 iterator 迭代器 collection 集合 pack/unpack 打包/解包 decorator 裝飾器 context manager ...

    yexiaobai 評論0 收藏0
  • Python有什么好學的》之下文管理

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

    qpwoeiru96 評論0 收藏0
  • Python中的下文管理和else塊

    摘要:上下文管理器協議包含和兩個方法。因此必要時在上下文管理器函數中使用語句防范錯誤。構建臨時忽略指定異常的上下文管理器。這是個基類,用于定義基于類的上下文管理器。塊結束時,按照后進先出的順序調用棧中各個上下文管理器的方法。 導語:本文章記錄了本人在學習Python基礎之控制流程篇的重點知識及個人心得,打算入門Python的朋友們可以來一起學習并交流。 本文重點: 1、掌握if語句之外的el...

    Michael_Lin 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<