码迷,mamicode.com
首页 > 编程语言 > 详细

Python:with-as

时间:2019-09-15 01:42:47      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:protocol   上下   控制   block   方法   prot   关闭   了解   具体步骤   

先来一个简单的实例

with open(file.txt,w) as file:
    file.write(text)

执行分为四个步骤:打开文件->将返回值赋给file->执行读写->关闭文件

前三个步骤都能与相应的语句对应,但第四个步骤是哪里来的?

这要从with这个控制流语句的机制来说起

在解释机制之前,我们首先来了解一下读写文件的一系列操作

打开->读写->关闭

当然不止文件操作有着这样的步骤

在Python中还有很多与之相类似的操作

为了简化这些操作,Python使用了一个非常巧妙的方法

这个方法叫做“上下文管理协议”,“context mangement protocol”

在类中定义两个方法__enter__,_exit__用来实现隐性的进入和清除

执行with-as语句的等价try-finally语句的具体步骤:

try:
  expression
  __enter__()
  with_block
finally:
  __exit__()

所以之前的实例中的第四个步骤其实就是__exit__方法

当然with-as语句有他自己的适用范围

只有类中具有__enter__,__exit__方法

这个类的实例才能用with-as语句

Python:with-as

标签:protocol   上下   控制   block   方法   prot   关闭   了解   具体步骤   

原文地址:https://www.cnblogs.com/jawide/p/11520642.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!