Python进阶
搜索文档…
简介
序
译后感
原作者前言
args 和 *kwargs
调试 Debugging
生成器 Generators
Map,Filter 和 Reduce
set 数据结构
三元运算符
装饰器
Global和Return
对象变动 Mutation
slots魔法
虚拟环境 Virtualenv
容器 Collections
枚举 Enumerate
对象自省
推导式 Comprehension
异常
类
lambda表达式
一行式
For - Else
使用C扩展
open函数
目标Python2+3
协程
函数缓存
上下文管理器
基于类的实现
处理异常
基于生成器的实现
推荐阅读
捐赠名单
由
GitBook
提供支持
上下文管理器
上下文管理器允许你在有需要的时候,精确地分配和释放资源。
使用上下文管理器最广泛的案例就是
with
语句了。 想象下你有两个需要结对执行的相关操作,然后还要在它们中间放置一段代码。 上下文管理器就是专门让你做这种事情的。举个例子:
1
with
open
(
'some_file'
,
'w'
)
as
opened_file
:
2
opened_file
.
write
(
'Hola!'
)
Copied!
上面这段代码打开了一个文件,往里面写入了一些数据,然后关闭该文件。如果在往文件写数据时发生异常,它也会尝试去关闭文件。上面那段代码与这一段是等价的:
1
file
=
open
(
'some_file'
,
'w'
)
2
try
:
3
file
.
write
(
'Hola!'
)
4
finally
:
5
file
.
close
()
Copied!
当与第一个例子对比时,我们可以看到,通过使用
with
,许多样板代码(boilerplate code)被消掉了。 这就是
with
语句的主要优势,它确保我们的文件会被关闭,而不用关注嵌套代码如何退出。
上下文管理器的一个常见用例,是资源的加锁和解锁,以及关闭已打开的文件(就像我已经展示给你看的)。
让我们看看如何来实现我们自己的上下文管理器。这会让我们更完全地理解在这些场景背后都发生着什么。
以前
Python 2+
下一个
基于类的实现
最近更新
8mo ago
复制链接