• 登录 | 注册



Arthur的随笔

The More I Learn, The Less I Know, Tracking Mind Only With Code

  • 目录视图

  • 摘要视图

  • 订阅

Rust开发技术学习路线     专家亲授Hadoop技术,你报名了吗?     【极客头条】动动手,写一篇文章就好     CSDN移动客户端,下载送50C币    

 

python with用法

分类: python 35895人阅读 评论(5) 收藏 举报

pythonimportexceptionclass

python中with可以明显改进代码友好度,比如:


[python] view plaincopyprint?

  1. with open('a.txt') as f:  

  2.     print f.readlines()  


为了我们自己的类也可以使用with, 只要给这个类增加两个函数__enter__, __exit__即可:



[python] view plaincopyprint?

  1. >>> class A:  

  2.     def __enter__(self):  

  3.         print 'in enter'  

  4.     def __exit__(self, e_t, e_v, t_b):  

  5.         print 'in exit'  

  6.   

  7. >>> with A() as a:  

  8.     print 'in with'  

  9.   

  10. in enter  

  11. in with  

  12. in exit  


另外python库中还有一个模块contextlib,使你不用构造含有__enter__, __exit__的类就可以使用with:



[python] view plaincopyprint?

  1. >>> from contextlib import contextmanager  

  2. >>> from __future__ import with_statement  

  3. >>> @contextmanager  

  4. ... def context():  

  5. ...     print 'entering the zone'  

  6. ...     try:  

  7. ...         yield  

  8. ...     except Exception, e:  

  9. ...         print 'with an error %s'%e  

  10. ...         raise e  

  11. ...     else:  

  12. ...         print 'with no error'  

  13. ...  

  14. >>> with context():  

  15. ...     print '----in context call------'  

  16. ...  

  17. entering the zone  

  18. ----in context call------  

  19. with no error  


使用的最多的就是这个contextmanager, 另外还有一个closing 用处不大



[python] view plaincopyprint?

  1. from contextlib import closing  

  2. import urllib  

  3.   

  4. with closing(urllib.urlopen('http://www.python.org')) as page:  

  5.     for line in page:  

  6.         print line  




版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 上一篇jstree 点箭头有效但点后面item无效的bug

  • 下一篇ajax readystate

  • 主题推荐

  • python函数classpreclassas

  • 猜你在找

  • Python自动化开发基础 多线程\多进程\及主机管理 day7

  • Excel2013函数实战职场培训视频教程

  • 零基础学Python开发系列教程

  • QuickTest Professional深入剖析--【上部】

  • 零基础学HTML 5实战开发(第一季)

  • 浅谈 Python 的 with 语句

  • python 模块大全

  • Python标准库非常经典的各种模块介绍

  • python 模块大全

  • Python标准库非常经典的各种模块介绍

  • 准备好了么? 跳吧             !更多职位尽在 CSDN JOB

  • 资深Python/PHP

    上海并友网络技术有限公司

    |

    12-20K/月

    我要跳槽

  • Python后端开发工程师

    北京天使汇金融信息服务有限公司

    |

    10-20K/月

    我要跳槽

  • Python工程师

    北京爱奇艺科技有限公司

    |

    13-20K/月

    我要跳槽

  • python开发工程师

    北京顺顺必达信息咨询有限公司

    |

    15-20K/月

    我要跳槽

查看评论

  • 5楼 飞越蓝天的云 2015-04-23 18:53发表 [回复]

  • 3_whq19890827.jpg

  • 还不错!刚刚用过!

  • 4楼 OuZhengguang 2014-05-29 17:01发表 [回复]

  • 3_epugv.jpg

  • 主要是yield在这里的作用

  • 3楼 OuZhengguang 2014-05-29 16:57发表 [回复]

  • 3_epugv.jpg

  • 对那个yield还是不是很清楚,求楼主解释解释啊:)

  • 2楼 Bird_1989 2013-11-11 10:01发表 [回复]

  • 3_ml0719787.jpg

  • 挺好,我好像懂了点

  • 1楼 caiss 2013-01-17 17:51发表 [回复]

  • 3_caizj021769.jpg

  • 确实好用啊,不知道这个和普通的用法性能上有什么区别,测试一下看看

您还没有登录,请[登录]或[注册]

* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

核心技术类目

全部主题 Hadoop AWS 移动游戏 Java Android iOS Swift 智能硬件 Docker OpenStack ××× Spark ERP IE10Eclipse CRM JavaScript 数据库 Ubuntu NFC WAP jQuery BI HTML5 Spring Apache .NET API HTML SDK IISFedora XML LBS Unity Splashtop UML components Windows Mobile Rails QEMU KDE Cassandra CloudStack FTCcoremail OPhone CouchBase 云计算 iOS6 Rackspace Web App SpringSide Maemo Compuware 大数据 aptech PerlTornado Ruby Hibernate ThinkPHP HBase Pure Solr Angular Cloud Foundry Redis Scala Django Bootstrap

  • 个人资料

python-with_第1张图片 
largetalk

 

  • 访问:266904次

  • 积分:3905

  • 等级: 

  • 排名:第3806名

  • 原创:137篇

  • 转载:16篇

  • 译文:2篇

  • 评论:46条

  • 文章搜索

  • 文章分类

  • django(16)

  • python(56)

  • linux(42)

  • 杂七杂八(69)

  • hadoop(5)

  • haskell(3)

  • ruby(4)

  • algorithm(11)

  • design pattern(2)

  • R&datamine(6)

  • NLP(3)

  • java(1)

  • 文章存档

  • 2015年01月(2)

  • 2014年12月(1)

  • 2014年01月(2)

  • 2013年12月(2)

  • 2013年11月(2)

  • 2013年10月(2)

  • 2013年09月(2)

  • 2013年08月(3)

  • 2013年07月(1)

  • 2013年06月(4)

  • 2013年05月(1)

  • 2013年04月(7)

  • 2013年03月(3)

  • 2013年02月(2)

  • 2013年01月(3)

  • 2012年12月(10)

  • 2012年11月(1)

  • 2012年09月(2)

  • 2012年08月(3)

  • 2012年07月(3)

  • 2012年06月(3)

  • 2012年05月(7)

  • 2012年04月(8)

  • 2012年03月(6)

  • 2012年02月(6)

  • 2012年01月(6)

  • 2011年12月(11)

  • 2011年11月(11)

  • 2011年10月(6)

  • 2011年09月(7)

  • 2011年08月(6)

  • 2011年07月(6)

  • 2011年06月(6)

  • 2011年05月(2)

  • 2011年04月(1)

  • 2011年02月(1)

  • 2010年12月(1)

  • 2010年09月(1)

  • 2010年08月(3)

  • 2010年07月(1)

  • 阅读排行

  • python with用法(35888)

  • ab "apr_socket_recv: Connection reset by peer" 错误解决(8273)

  • ubuntu配置ntp服务器(6648)

  • git merge和rebase的区别(6527)

  • mysql HA方案: MHA(6443)

  • gensim试用(6280)

  • svn结合git一起使用(5885)

  • python itertools模块学习(5514)

  • 关于Sentry(5255)

  • python string hash 函数(4919)

  • 评论排行

  • python with用法(5)

  • ab "apr_socket_recv: Connection reset by peer" 错误解决(4)

  • python源码查找子串(3)

  • git merge和rebase的区别(3)

  • beautiful python(3)

  • epoll学习笔记(3)

  • 关于Sentry(3)

  • datrie中文支持不够?(2)

  • tcp通信:多进程共享listen socket方式(2)

  • wordpress中保存明文密码(2)

  • 推荐文章

  • 最新评论

  • python with用法

    飞越蓝天的云: 还不错!刚刚用过!

  • wordpress中保存明文密码

    largetalk: @longlongagoTears:是4.0

  • wordpress中保存明文密码

    _tears_: 你这是那个版本呀?我测试4.1 和 3.8 都不行,怎么回事???

  • svn "local edit, incoming delete upon update" problem fix method

    lunar1983: 这个办法可行,谢谢~~~

  • datrie中文支持不够?

    xltytlive: 测试OK,非常感谢

  • mysql HA方案: MHA

    perlove6: 你好,有个问题不明白,在“在备选master和slave节点 crontab -e 添加计划任务”,...

  • gensim试用

    1000sprites: all_tokens = sum(texts, []),这句话没有报错吗?

  • 对数步计算斐波那契数列

    杰Tang_fighting: @frank_cg:计算机程序的构造和解释练习题1.19

  • svn结合git一起使用

    霜之咏叹调: 哥们,你还在吗?我首先尝试使用git-svn了,但是公司的svn权限很扯淡,没法用。最后考虑用你的方...

  • python with用法

    OuZhengguang: 主要是yield在这里的作用


  • 公司简介|招贤纳士|广告服务|银行汇款帐号|联系方式|版权声明|法律顾问|问题报告|合作伙伴|论坛反馈

  • 网站客服杂志客服微博客服[email protected]400-600-2320|北京创新乐知信息技术有限公司 版权所有|江苏乐知网络技术有限公司 提供商务支持

  • 京 ICP 证 070598 号|Copyright 1999-2014, CSDN.NET, All Rights Reserved