python的with是如何工作的

2021-07-04 08:30:12 字數 1326 閱讀 7294

class sample:

def __enter__(self):

print "in __enter__()"

return "foo"

def __exit__(self, type,value, trace):

print "in __exit__()"

def get_sample():

return sample()

with get_sample() as sample:

print "sample:",sample

執行結果

in __enter__()

sample: foo

in __exit__()

原理:1. __enter__()方法被執行

2. __enter__()方法返回的值 - 這個例子中是"foo",賦值給變數'sample'

3. 執行**塊,列印變數"sample"的值為 "foo"

4. __exit__()方法被呼叫

with真正強大之處是它可以處理異常

class sample:

def __enter__(self):

return self

def __exit__(self, type,value, trace):

print "type1:", type

print "value:",value

print "trace:",trace

def do_something(self):

bar = 1/0

return bar + 10

with sample() as sample:

sample.do_something()

執行結果:

type1:

value: integer division or modulo by zero

trace:

traceback (most recent call last):

file "c:\users\administrator\desktop\test.py", line 14, in

sample.do_something()

file "c:\users\administrator\desktop\test.py", line 10, in do_something

bar = 1/0

zerodivisionerror: integer division or modulo by zero

所以,異常處理可以放在__exit__()中

WinCE的Boot Loader是如何工作的

wince的boot loader是如何工作的 前提 此boot loader是位於nor flash的零位址的,cpu配置成復位後在此執行。1.前期cpu初始化 l 進入超級使用者模式 supervisor mode 顯式通過軟體指令初始化進入。l 清除指令和資料cache。l 清除tlbs tr...

你是如何自學 Python 的?

知乎 這是我在過去幾家公司招聘到工程師,python入職培訓的過程。時間分為4周,全部自學,僅提供大綱。適用於web方向 1 week1 讀完 簡明python教程 適應python開發環境 2 week2 寫個爬蟲,需要深入了解re urllib2 sqlite3 threading,queue等...

你是如何自學Python的

作為一名python愛好者,我也想跟大家分享分享我自學python的一些小經驗。搬來你的小板凳,聽聽看吧。也許,你會很有收穫,也許你也走上了自學python的不歸路。開講啦 然後就是要打好基礎,要想成為一名優秀的python程式設計師,最重要的是掌握程式設計思想。有了思想,我們就可以觸類旁通。在學習...