Python中的with...as语句

最近出差有点自己的空闲时间,于是这些日子又把Python的学习捡起来了。之前大四做毕设和大创的时候用过一点Python2,也不知道再捡起来是否顺利。

前两天在看一个用urllib库写爬虫的Demo的时候,看到了下面这一段代码:

with request.urlopen(oriurl) as response:
    for line in response:
        line = line.decode("utf-8")  # Decoding the binary data to text.

        if 'EST' in line or 'EDT' in line:  # look for Eastern Time

            print(line)

咦,这with...as是个什么东西?官方Document查起来!

关于with语句的执行过程,官方Document的相关章节描述如下:

带有一个“项目”的with语句的执行过程如下:

  1. 对上下文表达式(在with_item中给出的表达式)求值以获得一个上下文管理器。
  2. 载入上下文管理器的__enter__()以便后续使用。
  3. 载入上下文管理器的__exit__()以便后续使用。
  4. 发起调用上下文管理器的__enter__()方法。
  5. 如果with语句中包含一个目标,来自__enter__()的返回值将被赋值给它。
  6. 执行语句体。
  7. 发起调用上下文管理器的__exit()__方法。如果语句体的退出是由异常导致的,则其类型、值和回溯信息将被作为参数传递给__exit()__()。否则的话,将提供三个None参数。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值