python with as 使用

  1 class T():
  2     def __enter__(self):     #第一步执行此函数
  3         print 'this is enter'
  4         return 'enterbbb'     #返回值赋给 as 后面的变量,既t
  5     def __exit__(self, *arg):   #第三步执行此函数,arg用来接收异常
  6         print 'this is exit'
  7         print arg
  8         return 'aaa'
  9 
 10 with T() as t:
 11     print 'hahah'    #第二步执行下面的代码,且有异常不会抛出,而是传给__exist__

 12     print t

13      aa

一个类定义两个方法  __enter__和 __exit__,执行的结果是

this is enter
hahah
enterbbb
this is exit
(<type 'exceptions.NameError'>, NameError("name 'aa' is not defined",), <traceback object at 0x7f2c96aa8830>) 

with可以用来简化try finally代码,看起来可以比try finally更清晰。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值