python中实现上下文管理器的两种方法
上下文管理器:
python中实现了__enter__和__exit__方法的对象就可以称之为上下文管理器
实现方法一举例:
def File(object):
def __init__(self, file_name, file_model):
self.file_name = file_name
self.file_model = file_model
def __enter__(self):
self.f = open(self.file_name, self.model)
return self.f
def __exit(self):
self.f.close()
以下就实现了简单的上下文管理器
使用方法:
with File("1.tex", "r") as f:
f.write("hello world")
以下代码实现起来更加简洁明了, 不用再调用close()关闭文件
实现方法二举例:
Python 还提供了一个 contextmanager 的装饰器,更进一步简化了上下文管理器的实现方式。通过 yield 将函数分割成两部分,yield 之前的语句在 __enter__ 方法中执行,yield 之后的语句在 __exit__ 方法中执行。紧跟在 yield 后面的值是函数的返回值。
from contextlib import contextmanager
@contextmanager
def file (file_name, file_model):
f = open(file_name, file_model)
yield f
f.close()
以上也实现了上下文管理器,使用方法和以上的类似
with file("2.tex") as f:
f.write("hello world")
- python with语句上下文管理的两种实现方法
- 飘逸的python - 两种with语句实现方法
- 总结python实现父类调用两种方法的不同
- 矩阵或多维数组两种常用实现方法 - python
- python实现读取并显示图片的两种方法
- python实现列表对应元素求和的两种方法
- 使用python实现菱形的两种方法
- python用两种方法实现url短连接
- Python程序实现打开浏览器的两种方法
- 飘逸的python - 两种with语句实现方法
- Python实现列表去重的两种方法
- 两种方法实现Python二分查找算法
- 使用Python实现租车计费系统的两种方法
- python 获取本机ip地址的两种实现方法
- python用两种方法实现url短连接
- python实现中文输出的两种方法
- 实现LRU的两种方法---python实现
- python语言实现阶乘的两种方法---递归和迭代
- python中两种实现排序的方法:冒泡排序和插入排序
- Python 模拟登陆的两种实现方法