国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python中with用法講解

2020-02-15 21:20:09
字體:
來源:轉載
供稿:網友

我們都知道打開文件有兩種方法:

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 calledTraceback (most recent call last):hello pythonexit calledexc_type :<class 'ZeroDivisionError'>exc_val :division by zero File "F:/workspaces/python_workspaces/flask_study/with.py", line 25, in <module>  a = 1/0exc_tb :<traceback object at 0x0000023C4EDBB9C8>ZeroDivisionError: division by zeroProcess finished with exit code 1

我們看到,執行結果的輸入順序,分析如下:

當我們with Foo() as foo:時,此時會執行__enter__方法,然后進入執行體,也就是:

print("hello python")a = 1/0print("hello end")

語句,但是在a=1/0出現了異常,with將會中止,此時就執行__exit__方法,就算不出現異常,當執行體被執行完畢之后,__exit__方法仍然被執行一次。

我們回到with open("file")as f: 不用關閉文件的原因就是在__exit__方法中,存在關閉文件的操作,所以不用我們手工關閉文件,with已將為我們做好了這個操作,這就可以理解了。

以上就是小編整理的相關內容,如果大家有任何補充可以聯系武林站長站小編。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 章丘市| 两当县| 贺州市| 扬中市| 海晏县| 涡阳县| 外汇| 库车县| 农安县| 灵宝市| 库尔勒市| 东明县| 博罗县| 郁南县| 神农架林区| 云南省| 雷州市| 潢川县| 乌兰浩特市| 万荣县| 浦北县| 大兴区| 四川省| 克拉玛依市| 石台县| 岳阳县| 嘉峪关市| 永定县| 湖口县| 聂拉木县| 廊坊市| 纳雍县| 巨鹿县| 威信县| 新闻| 连城县| 丽江市| 越西县| 和顺县| 隆化县| 界首市|