python中with if else语句案例详解

python中with if else语句案例详解

代码:

class aa():
    def __enter__(self):
        print("进入了aa__enter__")
        return "aa__enter__"
    def __exit__(self, exc_type, exc_value, traceback):
        print("进入了aa__exit__")
        return "aa__exit__"

class bb():
    def __enter__(self):
        print("进入了bb__enter__")
        return "bb__enter__"
    def __exit__(self, exc_type, exc_value, traceback):
        print("进入了bb__exit__")
        return "bb__exit__"

with aa() if False else bb() as t:
    print("if后面为False的情况: ",t)

print("#"*40)

with aa() if True else bb() as t:
    print("if后面为True的情况: ",t)

输出结果:

进入了bb__enter__
if后面为False的情况:  bb__enter__
进入了bb__exit__
########################################
进入了aa__enter__
if后面为True的情况:  aa__enter__
进入了aa__exit__

        从这里的输出可以清楚的看到使用with的好处:使用 with 语句确保在嵌套块的末尾调用 exit 方法。
        所以在文件操作中经常使用with open来打开文件,其原因就是在文件对象中定义了 enterexit 方法,即文件对象也实现了上下文管理器,首先调用 enter 方法,然后执行 with 语句中的代码,最后调用 exit 方法。 即使出现错误,也会调用 exit 方法,也就是会关闭文件流。这样就避免了忘记关闭文件所带来的一些问题。

>>> with open('./test_runoob.txt') as f:
...     read_data = f.read()

>>> # 查看文件是否关闭
>>> f.closed
True
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值