欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python中with用法講解

 更新時(shí)間: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)閉文件,無(wú)論是否出現(xiàn)異常,with都會(huì)自動(dòng)幫助我們關(guān)閉文件,這是為什么呢?

我們先自定義一個(gè)類,用with來(lái)打開它:

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é)果的輸入順序,分析如下:

當(dāng)我們with Foo() as foo:時(shí),此時(shí)會(huì)執(zhí)行__enter__方法,然后進(jìn)入執(zhí)行體,也就是:

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

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

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

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

相關(guān)文章

  • python編程學(xué)習(xí)使用管道Pipe編寫優(yōu)化代碼

    python編程學(xué)習(xí)使用管道Pipe編寫優(yōu)化代碼

    大家好,今天這篇文章我將詳細(xì)講解 Pipe 如何讓你的代碼更加簡(jiǎn)潔的方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2021-11-11
  • 用Python獲取亞馬遜商品信息

    用Python獲取亞馬遜商品信息

    大家好,本篇文章主要講的是用Python獲取亞馬遜商品信息,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python操作Redis數(shù)據(jù)庫(kù)的詳細(xì)教程與應(yīng)用實(shí)戰(zhàn)

    Python操作Redis數(shù)據(jù)庫(kù)的詳細(xì)教程與應(yīng)用實(shí)戰(zhàn)

    Redis是一個(gè)高性能的鍵值存儲(chǔ)數(shù)據(jù)庫(kù),支持多種類型的數(shù)據(jù)結(jié)構(gòu),如字符串、哈希表、列表、集合和有序集合等,在Python中,通過(guò)redis-py庫(kù)可以方便地操作Redis數(shù)據(jù)庫(kù),本文將詳細(xì)介紹如何在Python代碼中操作Redis,需要的朋友可以參考下
    2024-08-08
  • Python實(shí)現(xiàn)點(diǎn)云投影到平面顯示

    Python實(shí)現(xiàn)點(diǎn)云投影到平面顯示

    今天小編就為大家分享一篇Python實(shí)現(xiàn)點(diǎn)云投影到平面顯示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例

    jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例

    這篇文章主要介紹了jupyter notebook讀取/導(dǎo)出文件/圖片實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • pytorch加載自定義網(wǎng)絡(luò)權(quán)重的實(shí)現(xiàn)

    pytorch加載自定義網(wǎng)絡(luò)權(quán)重的實(shí)現(xiàn)

    今天小編就為大家分享一篇pytorch加載自定義網(wǎng)絡(luò)權(quán)重的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Flask-Vue前后端分離的全過(guò)程講解

    Flask-Vue前后端分離的全過(guò)程講解

    這篇文章主要介紹了Flask-Vue前后端分離的全過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 簡(jiǎn)介Django中內(nèi)置的一些中間件

    簡(jiǎn)介Django中內(nèi)置的一些中間件

    這篇文章主要介紹了簡(jiǎn)介Django中內(nèi)置的一些中間件,Django是最具人氣的Python web開發(fā)框架,需要的朋友可以參考下
    2015-07-07
  • 深入理解Python分布式爬蟲原理

    深入理解Python分布式爬蟲原理

    本篇文章主要介紹了深入理解Python分布式爬蟲原理,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • Python爬蟲中Selenium實(shí)現(xiàn)文件上傳

    Python爬蟲中Selenium實(shí)現(xiàn)文件上傳

    這篇文章主要介紹了Python爬蟲中Selenium實(shí)現(xiàn)文件上傳,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評(píng)論