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

python 追蹤except信息方式

 更新時(shí)間:2020年04月25日 10:28:45   作者:酷python  
這篇文章主要介紹了python 追蹤except信息方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

看下面這個(gè)函數(shù)

def test():
 sum = 3/0
 
if __name__ == '__main__':
 test()

除0肯定是不對(duì)的,會(huì)引發(fā)一個(gè)except,內(nèi)容如下:

File "E:\Src\dongsheng\TestPython\testtrace_back.py", line 23, in <module>
test()
File "E:\Src\dongsheng\TestPython\testtrace_back.py", line 19, in test
sum = 3/0
ZeroDivisionError: integer division or modulo by zero

上面的提示,是在IDE中運(yùn)行時(shí)出現(xiàn)的,實(shí)際在線上運(yùn)行腳本時(shí),一般會(huì)用nohup 方式啟動(dòng),輸出內(nèi)容會(huì)寫(xiě)入到nohup.out文件中,但這個(gè)文件里的內(nèi)容可能非常多,很雜亂,不利于異常的排查。

python 提供了traceback ,可以完美的輸出except發(fā)生時(shí)的信息,就和上面的內(nèi)容一樣,而且可以輸入到指定的文件之中,所以,不妨寫(xiě)一個(gè)裝飾器,修飾那些需要監(jiān)督的函數(shù),當(dāng)他們發(fā)生異常時(shí),記錄下有關(guān)異常的信息。

#coding=utf-8
from functools import wraps
import traceback
 
def except_trace(filename):
 def decorate(func):
  @wraps(func)
  def wrapper(*args,**kwargs):
   try:
    func(*args,**kwargs)
   except:
    fp = open(filename,'w')
    traceback.print_exc(file=fp)
    fp.close()
  return wrapper
 return decorate
@except_trace('1.txt')
def test():
 sum = 3/0
 
if __name__ == '__main__':
 test()

這一次,發(fā)生異常后,有關(guān)異常的信息會(huì)輸入到1.txt文件中,這個(gè)文件中只包含異常的信息,方便查看。

補(bǔ)充知識(shí):Python 的 except 怪癖

讓我來(lái)展示一下我最喜歡的 Python 怪癖。你希望這段 Python 代碼做什么?

如果你是從另一種編程語(yǔ)言過(guò)來(lái)學(xué)習(xí) Python 的,你可能希望except子句引入嵌套范圍,因此在子句中賦值給 e 不會(huì)影響外部作用域中已有的 e 變量。然而,在 Python 中,控制結(jié)構(gòu)通常不引入嵌套作用域(列表推導(dǎo)是一個(gè)例外),所以如果你有更多的 Python 經(jīng)驗(yàn),你可能會(huì)期望它打印一個(gè)ZeroDivisionError實(shí)例。

實(shí)際上,在標(biāo)準(zhǔn) CPython 實(shí)現(xiàn)中,它什么也不打?。煌瑫r(shí),最后一行將引發(fā)一個(gè)NameError。這是一個(gè) bug 嗎?事實(shí)上,這是故意的。如果查看 except 子句生成的字節(jié)碼,可以看到:

當(dāng)控制流退出except塊時(shí),Python 將從作用域中刪除該名稱。為什么?因?yàn)楫惓3钟袑?duì)當(dāng)前棧幀的引用,該棧幀包含作用域內(nèi)的所有內(nèi)容。由于Python主要是通過(guò)引用計(jì)數(shù)來(lái)管理內(nèi)存主體的,這意味著當(dāng)前作用域內(nèi)的任何內(nèi)容都不會(huì)被釋放,直到下一輪垃圾收集運(yùn)行 (如果有的話)。目前的行為是內(nèi)存使用、易于實(shí)現(xiàn)和語(yǔ)言整潔之間的折衷。它有點(diǎn)缺點(diǎn),但我認(rèn)為它體現(xiàn)了我喜歡Python的一點(diǎn):不讓純粹性妨礙實(shí)用性。

但這只解釋了DELETE_NAME指令。為什么 CPython 把e設(shè)為None,即便隨后立即就刪除了這個(gè)變量?好吧,設(shè)想你和 CPython 團(tuán)隊(duì)有相同的想法,并且決定在 except 塊的末尾清理異常引用:

在except塊的末尾,CPython 將嘗試刪除你已經(jīng)刪除的名字e!為了解決這個(gè)問(wèn)題,CPython 在刪除e之前賦值e = None,以確保e存在。

以上這篇python 追蹤except信息方式就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談python中常用的excel模塊庫(kù)

    淺談python中常用的excel模塊庫(kù)

    本文主要介紹了python中常用的excel模塊庫(kù),感興趣的同學(xué),可以參考下。
    2021-06-06
  • Python3中在Anaconda環(huán)境下安裝basemap包

    Python3中在Anaconda環(huán)境下安裝basemap包

    今天小編就為大家分享一篇關(guān)于Python3中在Anaconda環(huán)境下安裝basemap包的文章,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • python返回昨天日期的方法

    python返回昨天日期的方法

    這篇文章主要介紹了python返回昨天日期的方法,涉及Python日期操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python入門(mén)變量的定義及類(lèi)型理解

    Python入門(mén)變量的定義及類(lèi)型理解

    本文適合編程語(yǔ)言零基礎(chǔ)的初學(xué)者,有打算轉(zhuǎn)行學(xué)習(xí)python的可以添加關(guān)注,后續(xù)小編將會(huì)把自己轉(zhuǎn)行學(xué)pyhton語(yǔ)言以來(lái)的所有筆記,和工作中總結(jié)的一些開(kāi)發(fā)經(jīng)驗(yàn)分享給大家
    2021-09-09
  • Python縮進(jìn)和冒號(hào)詳解

    Python縮進(jìn)和冒號(hào)詳解

    下面小編就為大家?guī)?lái)一篇Python縮進(jìn)和冒號(hào)詳解。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • python的多線程原來(lái)可以這樣解

    python的多線程原來(lái)可以這樣解

    這篇文章主要為大家介紹了python的多線程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2022-01-01
  • 解決tensorflow模型參數(shù)保存和加載的問(wèn)題

    解決tensorflow模型參數(shù)保存和加載的問(wèn)題

    今天小編就為大家分享一篇解決tensorflow模型參數(shù)保存和加載的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • TensorFlow隱藏操作探索(張量操作和定制模型算法)

    TensorFlow隱藏操作探索(張量操作和定制模型算法)

    這篇文章主要為大家介紹了TensorFlow隱藏操作探索(張量操作和定制模型算法),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • python 求10個(gè)數(shù)的平均數(shù)實(shí)例

    python 求10個(gè)數(shù)的平均數(shù)實(shí)例

    今天小編就為大家分享一篇python 求10個(gè)數(shù)的平均數(shù)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • python通過(guò)配置文件共享全局變量的實(shí)例

    python通過(guò)配置文件共享全局變量的實(shí)例

    今天小編就為大家分享一篇python通過(guò)配置文件共享全局變量的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-01-01

最新評(píng)論

桃园市| 洛阳市| 离岛区| 巴里| 从化市| 抚顺市| 饶河县| 绥中县| 徐州市| 武清区| 尼木县| 桂东县| 巫山县| 三门县| 两当县| 乌鲁木齐市| 辉县市| 闵行区| 曲麻莱县| 广宗县| 德格县| 兴宁市| 百色市| 虞城县| 玉山县| 黔东| 卢龙县| 德格县| 乡宁县| 马山县| 若尔盖县| 阿尔山市| 达日县| 广安市| 江华| 平果县| 洛扎县| 慈溪市| 绥宁县| 陈巴尔虎旗| 封开县|