国产探花免费观看_亚洲丰满少妇自慰呻吟_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已將為我們做好了這個操作,這就可以理解了。

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴中市| 新宾| 高唐县| 旌德县| 敖汉旗| 盐边县| 武宁县| 溧水县| 会昌县| 康马县| 清徐县| 大余县| 沂源县| 揭西县| 延寿县| 肥东县| 明溪县| 宁化县| 穆棱市| 江孜县| 东安县| 乌兰察布市| 康保县| 离岛区| 双峰县| 内丘县| 云霄县| 揭阳市| 永德县| 宝山区| 夏津县| 宜丰县| 保康县| 罗平县| 太仓市| 新龙县| 建昌县| 五指山市| 漳浦县| 枣阳市| 沈丘县|