首页 > 编程语言 > 详细

python 上下文管理器和contextmanager

时间:2021-07-26 22:39:18      阅读:19      评论:0      收藏:0      [点我收藏+]

什么是上下文管理器?上下文管理器就是允许你可以自动地开始和结束一些事情

 

要实现with上下文管理器,需要对象实现enter()和exit()2个函数。

class Closer:
    def __init__(self, obj):
        self.obj = obj

    def __enter__(self):
        return self.obj

    def __exit__(self):
        self.obj.close() # 前提是obj对象有close()方法

from ftplib import FTP

with Closer(FTP(‘hostname‘)) as ftpconn:
    print(ftpconn.__dict__)
# with语句退出时,会自动调用__exit__()方法。

 

利用contextlib创建一个上下文管理器

from contextlib import contextmanager

@contextmanager
def g(name):
    print(f‘<{name}>‘)
    yield  # 这行代码表示__enter__()执行完毕,下面的代码表示__exit__()执行的效果 
    print(f‘</{name}>‘)

with g(‘h1‘) as t:
    print(t)  #yield返回为None
    print(‘foo‘)

##output##

None
foo

python 上下文管理器和contextmanager

原文:https://blog.51cto.com/jackor/3190782

(0)
(0)
   
举报
评论 一句话评论(0
分享档案
最新文章
教程昨日排行
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!