Python3重学基础:with上下文的使用

1.申明

1.由于本人重新梳理知识,发现当前的with是可以自动关闭资源的,所以决定记下来,用于巩固自己的知识

2.with(上下文管理器)

1.with后面的资源的时候,在使用with的这句话的时候,会默认调用一个__enter()__方法,(所以一般都不要写__开头的方法,可能会于Python中的方法有冲突)

2.在with后面的as 的模块的变量,跳出with的作用范围的时候会默认调用一个__exit()__方法

3.一个简单的demo说明with的作用

# 测试创建自己的with上下文管理器

class MyContextManger:
    def __context__(self):
        print("__context__被调用")

    def __enter__(self):
        print("__enter__被调用")

    def __exit__(self, exc_type, exc_val, exc_tb):
        print("__exit__被调用")


m = MyContextManger()
print("开始使用with")
with m as c: # 这里就会调用enter方法
    print("开始打印当前的变量")
    print(m)
    print("结束打印变量")
# 这里就会调用exit()方法

print("结束")

结果:

在这里插入图片描述

1.通过结果发现有的时候书上的内容是错误的,可能Python的版本不一样

2.打印结果证明了with上下文管理器就是和__enter()__和__exit()__方法有关,和其他方法无关

4.总结

1.通过这个发现当前的Python的特殊实现和简洁高效就是通过这个__方法__来实现的

2.所以我们在编写方法或者变量的时候尽量不要使用__变量__或者__方法__这中,可能会与Python冲突

3.with开始就会调用__enter()__方法,结束就会调用__exit()__方法

以上纯属个人见解,如有问题请联系本人!

发布了219 篇原创文章 · 获赞 39 · 访问量 1万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览