上下文管理 with 语句
来源:互联网 发布:信用卡淘宝买东西套现 编辑:程序博客网 时间:2024/06/05 15:05
你有没有想过这样的情况:当我们需要使用一个文件时,只需要调用一个且调用一次某函数,就可以实现下面的功能:
该函数帮我们打开文件并返回一个文件描述符供我们操作,然后在我们操作完文件后该函数自动关闭文件。
(注意,上面的操作中从头到尾我们只调用了一次该函数。)
其实 Python 中就有这样的函数,它就是 with。
eg:
with open('/etc/passwd', 'r') as f:
# 下面为 with 的代码块
for eachLine in f:
....
在上面的例子中,with 自动帮我们打开文件,而执行完“ with 的代码块”后 with 自动帮我们将文件关闭。
不过你可能注意到了,这里 with 的“打开文件操作”还是调用了 open 函数,那么 with 的作用应该不仅仅是自动帮我们关闭文件那么简单吧。
的确如此,with 语句的作用在于从流程中把资源分配释放的相关代码统统去掉。
比如上面的代码,with 就帮我们在使用完文件之后关闭文件,不用我们在手动关闭了。
然后,with 还支持的协议对象有:
file (如上面的例子)
decimal.Context
thread.LockType
threading.Lock
threading.RLock
threading.Condition
threading.Semaphore
threading.BoundedSemaphore
该函数帮我们打开文件并返回一个文件描述符供我们操作,然后在我们操作完文件后该函数自动关闭文件。
(注意,上面的操作中从头到尾我们只调用了一次该函数。)
其实 Python 中就有这样的函数,它就是 with。
eg:
with open('/etc/passwd', 'r') as f:
# 下面为 with 的代码块
for eachLine in f:
....
在上面的例子中,with 自动帮我们打开文件,而执行完“ with 的代码块”后 with 自动帮我们将文件关闭。
不过你可能注意到了,这里 with 的“打开文件操作”还是调用了 open 函数,那么 with 的作用应该不仅仅是自动帮我们关闭文件那么简单吧。
的确如此,with 语句的作用在于从流程中把资源分配释放的相关代码统统去掉。
比如上面的代码,with 就帮我们在使用完文件之后关闭文件,不用我们在手动关闭了。
然后,with 还支持的协议对象有:
file (如上面的例子)
decimal.Context
thread.LockType
threading.Lock
threading.RLock
threading.Condition
threading.Semaphore
threading.BoundedSemaphore
0 0
- 上下文管理 with 语句
- Python上下文管理—with语句的用法
- python的上下文管理和with语句详解
- 【Python】上下文管理 with...as...
- python上下文管理器及with语句
- python with语句与上下文管理器
- python上下文管理器ContextLib及with语句
- 上下文管理器与with语句(笔记)
- With语句和上下文管理器ContextManager
- python上下文管理器ContextLib及with语句
- python中的with语句及上下文管理器
- Python:with语句和上下文管理器对象
- Python学习之with语句和上下文管理器详解
- python的with语句和上下文管理器初窥
- python学习笔记:利用contextlib和@contextmanager实现with语句上下文实例
- python基础-打开模式、seek、修改文件、with上下文管理、truncate
- python contextlib 上下文管理
- golang-context(上下文管理)
- iOS 远程消息推送 APNS推送原理和一步一步开发详解篇(新手推荐)
- zzulioj 1899(985的最大和难题)
- 日志 - 执行时间
- java编程思想 bruce Eckel chapter5 初始化与清理
- 读写锁_用互斥和事件实现
- 上下文管理 with 语句
- 纯CSS设置Checkbox复选框控件的样式
- 深拷贝 和 浅拷贝
- SDUT1075Doubles
- spring mvc +hibernate +spring +shiro 实现权限管理详细配置
- POJ 1236 Network of Schools(使DAG强联通最小加边数)
- 时间计算
- POJ 2983 Is the Information Reliable?(差分约束)
- poj 1006中国剩余定理的应用