>>classA:def__enter__(self):print'inenter'def__exit__(self,e_t,e_v,t_b):print'inexit'>>>withA()" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python with用法實例

系統 1758 0

python中with可以明顯改進代碼友好度,比如:

復制代碼 代碼如下:

with open('a.txt') as f:?
??? print f.readlines()?

為了我們自己的類也可以使用with, 只要給這個類增加兩個函數__enter__, __exit__即可:
復制代碼 代碼如下:

>>> class A:?
??? def __enter__(self):?
??????? print 'in enter'?
??? def __exit__(self, e_t, e_v, t_b):?
??????? print 'in exit'?
?
>>> with A() as a:?
??? print 'in with'?
?
in enter?
in with?
in exit?

另外python庫中還有一個模塊contextlib,使你不用構造含有__enter__, __exit__的類就可以使用with:
復制代碼 代碼如下:

>>> from contextlib import contextmanager?
>>> from __future__ import with_statement?
>>> @contextmanager?
... def context():?
...???? print 'entering the zone'?
...???? try:?
...???????? yield?
...???? except Exception, e:?
...???????? print 'with an error %s'%e?
...???????? raise e?
...???? else:?
...???????? print 'with no error'?
...?
>>> with context():?
...???? print '----in context call------'?
...?
entering the zone?
----in context call------?
with no error?

使用的最多的就是這個contextmanager, 另外還有一個closing 用處不大
復制代碼 代碼如下:

from contextlib import closing?
import urllib?
?
with closing(urllib.urlopen('http://www.python.org')) as page:?
??? for line in page:?
??????? print line?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 高要市| 舒城县| 长乐市| 外汇| 成安县| 信宜市| 泽库县| 平远县| 西乡县| 大名县| 靖边县| 淅川县| 安庆市| 河间市| 朝阳区| 平昌县| 花垣县| 南平市| 中超| 广安市| 马龙县| 鄂托克前旗| 嘉黎县| 惠东县| 酒泉市| 青冈县| 柳江县| 忻州市| 周宁县| 沾化县| 盐边县| 探索| 乐都县| 泰州市| 盘山县| 黄大仙区| 鹤岗市| 长治市| 广平县| 佛冈县| 宁远县|