没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
1页
我们都知道打开文件有两种方法: f = open() with open() as f: 这两种方法的区别就是第一种方法需要我们自己关闭文件;f.close(),而第二种方法不需要我们自己关闭文件,无论是否出现异常,with都会自动帮助我们关闭文件,这是为什么呢? 我们先自定义一个类,用with来打开它: class Foo(): def __enter__(self): print("enter called") def __exit__(self, exc_type, exc_val, exc_tb): print("exit called") p
资源推荐
资源详情
资源评论
python中中with用法讲解用法讲解
我们都知道打开文件有两种方法:
f = open()
with open() as f:
这两种方法的区别就是第一种方法需要我们自己关闭文件;f.close(),而第二种方法不需要我们自己关闭文件,无论是否出现
异常,with都会自动帮助我们关闭文件,这是为什么呢?
我们先自定义一个类,用with来打开它:
class Foo():
def __enter__(self):
print("enter called")
def __exit__(self, exc_type, exc_val, exc_tb):
print("exit called")
print("exc_type :%s"%exc_type)
print("exc_val :%s"%exc_val)
print("exc_tb :%s"%exc_tb)
with Foo() as foo:
print("hello python")
a = 1/0
print("hello end")
执行结果:
enter called
Traceback (most recent call last):
hello python
exit called
exc_type :<class 'ZeroDivisionError'>
exc_val :division by zero
File "F:/workspaces/python_workspaces/flask_study/with.py", line 25, in <module>
a = 1/0
exc_tb :<traceback object at 0x0000023C4EDBB9C8>
ZeroDivisionError: division by zero
Process finished with exit code 1
我们看到,执行结果的输入顺序,分析如下:
当我们with Foo() as foo:时,此时会执行__enter__方法,然后进入执行体,也就是:
print("hello python")
a = 1/0
print("hello end")
语句,但是在a=1/0出现了异常,with将会中止,此时就执行__exit__方法,就算不出现异常,当执行体被执行完毕之
后,__exit__方法仍然被执行一次。
我们回到with open(“file”)as f: 不用关闭文件的原因就是在__exit__方法中,存在关闭文件的操作,所以不用我们手工关闭文
件,with已将为我们做好了这个操作,这就可以理解了。
以上就是小编整理的相关内容,如果大家有任何补充可以联系软件开发网小编。
您可能感兴趣的文章您可能感兴趣的文章:老生常谈Python startswith()函数与endswith函数在Python中操作字符串之startswith()方法的使用Python
中用startswith()函数判断字符串开头的教程Python中的startswith和endswith函数使用实例python闭包、深浅拷贝、垃圾回
收、with语句知识点汇总python with (as)语句实例详解Python with标签使用方法解析Python startswith()和endswith() 方法原
理解析
资源评论
weixin_38557935
- 粉丝: 0
- 资源: 955
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功