2012-01-24 78 views
3

我試過谷歌和其他地方,但我似乎無法找到with聲明的好解釋。在什麼情況下有用?我瞭解它如何與文件協同工作,但如何才能使用它?良好的Python與聲明說明

+2

請提出具體問題。 – bmargulies

+6

我不知道你在搜索什麼,但是[「python with statement」](https://www.google.com/search?q=python+with+statement)對我來說產生了相當不錯的結果。 –

+3

你不瞭解什麼?你有什麼嘗試?你讀過文檔嗎?這個怎麼樣? http://effbot.org/zone/python-with-statement.htm –

回答

4

這裏有一個很好的例子:

class controlled_execution: 
      def __enter__(self): 
       set things up 
       return thing 
      def __exit__(self, type, value, traceback): 
       tear things down 

     with controlled_execution() as thing: 
      some code 

當「與」被執行的語句,Python的計算表達式,調用進入上所得到的值方法(這被稱爲「上下文後衛」) ,並指定任何輸入返回由as給出的變量。然後Python將執行代碼體,並且無論該代碼中發生了什麼,都可以調用guard對象的出口方法。

+2

這是從[源代碼](http://effbot.org/zone/python-with-statement.htm)複製的 - 源代碼代碼和解釋。關於effbot的源代碼屬於公共領域,但[不允許重新發布文章本身](http://effbot.org/zone/copyright.htm)。由於這只是一個段落,因此可能有資格作爲合理使用,但這至少會引用一個參考。 –

+0

它從來不屬於我自己的工作範疇,事實上它明確地說是一個很好的例子。 – OnResolve

+0

@OnResolve:它不會說**的例子。這意味着即使你不這樣說,它也可能是你的。在這種情況下,證據表明這不是你的。現在,我不是在這裏指責;我只是想澄清一些可能會被誤解的東西。 – BoltClock