最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中with用法講解

 更新時間:2020年02月07日 14:32:07   作者:木&子  
在本篇文章里小編給大家整理的是關(guān)于python中with用法講解內(nèi)容,有需要的朋友們可以參考下。

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

  • f = open()
  • with open() as f:

這兩種方法的區(qū)別就是第一種方法需要我們自己關(guān)閉文件;f.close(),而第二種方法不需要我們自己關(guān)閉文件,無論是否出現(xiàn)異常,with都會自動幫助我們關(guān)閉文件,這是為什么呢?

我們先自定義一個類,用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")

執(zhí)行結(jié)果:

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

我們看到,執(zhí)行結(jié)果的輸入順序,分析如下:

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

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

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

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

以上就是小編整理的相關(guān)內(nèi)容,如果大家有任何補充可以聯(lián)系腳本之家小編。

相關(guān)文章

  • python中語法糖的妙用分享

    python中語法糖的妙用分享

    在Python中,語法糖是指一些為了增加代碼的可讀性、易用性和簡潔性而添加的特性,本文為大家整理了一些python中常見語法糖的使用,需要的小伙伴可以了解下
    2023-11-11
  • 使用Python微信庫itchat獲得好友和群組已撤回的消息

    使用Python微信庫itchat獲得好友和群組已撤回的消息

    這篇文章主要介紹了使用Python微信庫itchat獲得好友和群組已撤回的消息,需要的朋友可以參考下
    2018-06-06
  • 使用Python實現(xiàn)簡單的人臉識別功能(附源碼)

    使用Python實現(xiàn)簡單的人臉識別功能(附源碼)

    Python中實現(xiàn)人臉識別功能有多種方法,依賴于python膠水語言的特性,我們通過調(diào)用包可以快速準確的達成這一目的,本文給大家分享使用Python實現(xiàn)簡單的人臉識別功能的操作步驟,感興趣的朋友一起看看吧
    2021-12-12
  • Flask框架debug與配置項的開啟與設(shè)置詳解

    Flask框架debug與配置項的開啟與設(shè)置詳解

    這篇文章主要介紹了Flask框架debug與配置項的開啟與設(shè)置,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • 詳解Python中的元組與邏輯運算符

    詳解Python中的元組與邏輯運算符

    這篇文章主要介紹了Python中的元組與邏輯運算符的用法,是Python入門學習中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-10-10
  • Python實現(xiàn)簡單的索引排序與搜索功能

    Python實現(xiàn)簡單的索引排序與搜索功能

    這篇文章主要介紹了Python實現(xiàn)簡單的索引排序與搜索功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • python實現(xiàn)從ftp上下載文件的實例方法

    python實現(xiàn)從ftp上下載文件的實例方法

    在本篇文章里小編給大家整理了關(guān)于python實現(xiàn)從ftp上下載文件的實例方法,需要的朋友們可以參考下。
    2020-07-07
  • python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式

    python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式

    這篇文章主要介紹了python?request要求接口參數(shù)必須是json數(shù)據(jù)的處理方式,Reqeusts支持以form表單形式發(fā)送post請求,只需要將請求的參數(shù)構(gòu)造成一個字典,然后傳給requests.post()的data參數(shù)即可,本文通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2022-08-08
  • kaggle+mnist實現(xiàn)手寫字體識別

    kaggle+mnist實現(xiàn)手寫字體識別

    這篇文章主要為大家詳細介紹了kaggle+mnist實現(xiàn)手寫字體識別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-07-07
  • Python編程實現(xiàn)tail-n查看日志文件的方法

    Python編程實現(xiàn)tail-n查看日志文件的方法

    這篇文章主要介紹了Python編程實現(xiàn)tail-n查看日志文件的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07

最新評論

黔南| 马尔康县| 巴南区| 麻江县| 蓬溪县| 手机| 改则县| 文登市| 曲靖市| 罗山县| 错那县| 庆城县| 交口县| 安塞县| 潞城市| 包头市| 昭觉县| 丹江口市| 荥经县| 苍梧县| 登封市| 尚志市| 临江市| 南宁市| 定陶县| 昌黎县| 儋州市| 西安市| 永泰县| 濉溪县| 铜川市| 红河县| 迁西县| 云和县| 额尔古纳市| 汉沽区| 巴南区| 清远市| 独山县| 吉木乃县| 化隆|