首页 > 编程知识 正文

python在with(Python ?)

时间:2023-12-14 13:33:54 阅读:315700 作者:DQVN

本文目录一览:

python中with语句的作用

with语句相当于你定义一个类的时候定义了__enter__()和__exit__()这个两个方法。

在我们进行文件操作的的时候会用到open方法,后面有了with open以后就不再只使用open方法了,为什么?因为with open方法简单,我们不用再去管关闭文件了,即使中间发生异常,with open也会帮我们把文件关闭掉,以下示例演示下with open方法;

class File(object):

"""文件操作类"""

def __init__(self, filepath, mode):

self.filepath = filepath

self.mode = mode

def __enter__(self):

"""打开文件"""

self.file = open(self.filepath, self.mode)

print("打开文件")

return self.file

def __exit__(self, exc_type, exc_val, exc_tb):

"""关闭文件"""

print("关闭文件")

self.file.close()

if __name__ == '__main__':

with File('log.log', 'r') as file:

file.write("家啊")

可以看出来有了__enter__()和__exit__(),我们自定义的类也可以使用with了

python中with是什么意思

用来创建一个可以在使用结束后自动关闭的对象,前提是这个class实现了__enter__() 和 __exit__() 方法.

给你个更详细的讲解IBM developerworks

python的with关键字

with表达式其实是try-finally的简写形式。但是又不是全相同。

其中的context是一个表达式,返回的是一个对象,var用来保存context表达式返回的对象,可以有单个或者多个返回值。

表达式open('1.txt')返回是一个_io.TextIOWrapper 类型的变量用f接受到。在with语句块中就可以使用这个变量操作文件。执行with这个结构之后。f会自动关闭。相当于自带了一个finally。

但是with本身并没有异常捕获的功能,但是如果发生了运行时异常,它照样可以关闭文件释放资源。

这个例子可以看出with没有捕获异常的功能。

这个例子可以看出with发生了异常也会关闭程序。

自定义类必须包含上述几个方法才能正确使用with关键字。

下面我们故意加一个NameError

即使程序发生了错误,python解释器终止了我们的程序,但是我们的类 还是顺利关闭了。

1、文件操作。2、进程线程之间互斥对象。3、支持上下文其他对象

如何用python 中with 用法

要使用 with 语句,首先要明白上下文管理器这一概念。有了上下文管理器,with 语句才能工作。

下面是一组与上下文管理器和with 语句有关的概念。

上下文管理协议(Context Management Protocol):包含方法 __enter__() 和 __exit__(),支持

该协议的对象要实现这两个方法。

上下文管理器(Context Manager):支持上下文管理协议的对象,这种对象实现了

__enter__() 和 __exit__() 方法。上下文管理器定义执行 with 语句时要建立的运行时上下文,

负责执行 with 语句块上下文中的进入与退出操作。通常使用 with 语句调用上下文管理器,

也可以通过直接调用其方法来使用。

运行时上下文(runtime context):由上下文管理器创建,通过上下文管理器的 __enter__() 和

__exit__() 方法实现,__enter__() 方法在语句体执行之前进入运行时上下文,__exit__() 在

语句体执行完后从运行时上下文退出。with 语句支持运行时上下文这一概念。

上下文表达式(Context Expression):with 语句中跟在关键字 with 之后的表达式,该表达式

要返回一个上下文管理器对象。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。