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

新手常見Python錯(cuò)誤及異常解決處理方案

 更新時(shí)間:2020年06月18日 11:39:23   作者:guran0822  
這篇文章主要介紹了新手常見Python錯(cuò)誤及異常解決處理方案,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

寫Python代碼的小伙伴不可避免地會(huì)遇到代碼執(zhí)行錯(cuò)誤和異常,這次就來詳細(xì)且不失通俗地總結(jié)一下python中的錯(cuò)誤和異常。

先拋出兩個(gè)問題:

什么是Python錯(cuò)誤和異常?

如何處理Python錯(cuò)誤和異常?

1.語(yǔ)法錯(cuò)誤可能是初學(xué)者最常遇到的,如下面熟悉的畫面:

SyntaxError: invalid syntax語(yǔ)法錯(cuò)誤又稱解析錯(cuò)誤,又有老哥會(huì)問什么是解析錯(cuò)誤?簡(jiǎn)單來說是基本語(yǔ)法結(jié)構(gòu)寫錯(cuò)了,如:多任務(wù)寫成一行、for循環(huán)沒加‘:'等。如下:

多任務(wù)寫成一行

for循環(huán)沒加‘:'

上面示例可以看到,針對(duì)語(yǔ)法錯(cuò)誤,python解析器會(huì)輸出錯(cuò)誤的那一行,并且在最先找到的錯(cuò)誤的位置標(biāo)記了一個(gè)箭頭。

 熟悉python語(yǔ)法后,可以避免語(yǔ)法錯(cuò)誤,但是代碼常會(huì)發(fā)生異常(Exception)。還是兩個(gè)問題:

2.異常是什么?

 異常和語(yǔ)法錯(cuò)誤有什么區(qū)別呢?

關(guān)于異常,舉個(gè)例子:

  這行代碼出現(xiàn)異常,因?yàn)镻rint的p應(yīng)該小寫:

python拋出異常類型:NameError,即名字錯(cuò)誤。

其它異常的例子:

可以看到,異常有不同的類型,發(fā)生異常后,其類型名稱會(huì)被打印出來。上述這些都是python內(nèi)置的異常,用戶也可以自定義異常,這里不做贅述。

3、try...except...語(yǔ)句

有python編程經(jīng)驗(yàn)的人會(huì)知道,python里用try...except...語(yǔ)句來處理異常情況。

先看個(gè)異常處理的示例:

看,我們完美地捕捉到了程序中的異常。

結(jié)合上面的示例,處理異常的規(guī)則是:把執(zhí)行的語(yǔ)句放在 try 代碼塊中,將錯(cuò)誤處理器代碼放置在 except 代碼塊中,except會(huì)引發(fā)ZeroDivisionError異常來提醒Coder,這段代碼的錯(cuò)誤是零不能作為被除數(shù)。

except后面也可以不添加異常類型,會(huì)捕獲所有出現(xiàn)的異常:

我們可以把try...except...原理歸納為幾個(gè)要點(diǎn):

  • 首先,執(zhí)行 try 子句 (try 和 except 關(guān)鍵字之間的(多行)語(yǔ)句)
  • 如果沒有異常發(fā)生,則跳過 except 子句 并完成 try 語(yǔ)句的執(zhí)行
  • 如果在執(zhí)行try 子句時(shí)發(fā)生了異常,則跳過該子句中剩下的部分。然后,如果異常的類型和 except 關(guān)鍵字后面的異常匹配,則執(zhí)行 except 子句 ,然后繼續(xù)執(zhí)行 try 語(yǔ)句之后的代碼

如果發(fā)生的異常和 except 子句中指定的異常不匹配,則將其傳遞到外部的 try 語(yǔ)句中;如果沒有找到處理程序,則它是一個(gè)未處理異常,執(zhí)行將停止并顯示如上所示的消息

4、多個(gè)except子句

上面的try...except...語(yǔ)句只處理了一種異常,如果我想多匹配幾個(gè)異常類型,怎么辦呢?

這里就需要多個(gè)except子句來幫忙了,舉個(gè)例子:

引發(fā)異常ZeroDivisionError

引發(fā)異常TypeError

上面我們用了兩個(gè)except,匹配ZeroDivisionError和TypeError這兩種異常,第一個(gè)代碼捕捉到了ZeroDivisionError,第二段代碼捕捉到了TypeError異常,一個(gè)都沒有漏。
當(dāng)然你還可以這樣寫:

也就是用一個(gè)except捕捉多個(gè)異常,異常類型放到except后面的元組里。

綜上,對(duì)于多個(gè)except子句,可以總結(jié)為:

一個(gè)try語(yǔ)句可能有多個(gè) except 子句,以指定不同異常的處理程序

最多會(huì)執(zhí)行一個(gè)處理程序

處理程序只處理相應(yīng)的 try 子句中發(fā)生的異常,而不處理同一try語(yǔ)句內(nèi)其他處理程序中的異常

一個(gè) except 子句可以將多個(gè)異常命名為帶括號(hào)的元組

5、try...except Exception as e語(yǔ)句

我們常常會(huì)看看這樣的寫法:

try...exceptException as e其中的e代表什么意思呢?

再舉個(gè)例子:

通過示例可以知道,e輸出了異常類型。
也就是說,Exception匹配了所有異常,把異常名稱賦給了e。

當(dāng)然這里不一定非得是e,你可以取任何的變量名,只是約定俗稱這樣寫罷了。

6、try...except...finally語(yǔ)句

try...except...finally語(yǔ)句可能并不那么常見,但它是非常有用的。

如果說,我想用python打開了一個(gè)txt文件,然后讀取,寫入,最后關(guān)閉文件對(duì)象。這是一套常規(guī)流程,如果我想捕捉代碼過程中的異常,又要保證無論是否有異常,最后都必須要關(guān)閉文件。這時(shí)候就用到finally,看下面例子:

上面代碼,既捕捉到了異常,最終又關(guān)閉了文件對(duì)象。

finaly的作用是,無論except是否捕捉到異常,

finally后面的代碼都會(huì)執(zhí)行,try獲取了資源,

finally釋放資源,保證了收尾工作。

7、with...語(yǔ)句

with...語(yǔ)句是try-finally語(yǔ)句的簡(jiǎn)寫,可以替代try-finally的功能。

表達(dá)式open('poem.txt')返回是一個(gè)_io.TextIOWrapper 類型的變量賦給f。

在with語(yǔ)句塊中就可以使用這個(gè)變量操作文件。

執(zhí)行with這個(gè)結(jié)構(gòu)之后,f會(huì)自動(dòng)關(guān)閉,相當(dāng)于自帶了一個(gè)finally。

8、總結(jié)

本文詳細(xì)且清晰地講解了Python中錯(cuò)誤和異常的概念及其處理方式,

通過具體案例展示try...except、try...finally、with...等句式的具體用法,

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解Python的連接符

    詳解Python的連接符

    這篇文章主要為大家介紹了Python的連接符,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python實(shí)現(xiàn)暴力匹配算法(字符串匹配)

    Python實(shí)現(xiàn)暴力匹配算法(字符串匹配)

    本文主要介紹了Python實(shí)現(xiàn)暴力匹配算法,其主要思想是逐個(gè)字符地比較文本串和模式串,從文本串的每個(gè)可能的起始位置開始,依次檢查是否有匹配的子串,下面就來介紹 一下如何實(shí)現(xiàn)
    2023-09-09
  • PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)

    PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)

    這篇文章主要介紹了PyCharm新建.py文件時(shí)默認(rèn)添加信息的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 在Ubuntu中安裝并配置Pycharm教程的實(shí)現(xiàn)方法

    在Ubuntu中安裝并配置Pycharm教程的實(shí)現(xiàn)方法

    這篇文章主要介紹了在Ubuntu中安裝并配置Pycharm教程的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Python進(jìn)行圖片信息提取并重命名

    Python進(jìn)行圖片信息提取并重命名

    Tesseract-OCR是一款優(yōu)秀的開源OCR軟件,本文主要介紹了如何使用Tesseract-OCR工具識(shí)別圖片并提取信息,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • 使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程

    使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程

    這篇文章主要介紹了使用wxPython獲取系統(tǒng)剪貼板中的數(shù)據(jù)的教程,wxPython是一個(gè)非常受歡迎的Python圖形庫(kù),需要的朋友可以參考下
    2015-05-05
  • python?自定義裝飾器使用及原理詳解(最新推薦)

    python?自定義裝飾器使用及原理詳解(最新推薦)

    本文詳細(xì)介紹了Python裝飾器的原理和使用方法,包括簡(jiǎn)單的裝飾器、帶參數(shù)的裝飾器、原函數(shù)的傳參、保留原函數(shù)元數(shù)據(jù)以及類裝飾器,通過這些講解,讀者可以全面了解裝飾器的強(qiáng)大功能和應(yīng)用技巧,感興趣的朋友一起看看吧
    2025-02-02
  • pandas dataframe拼接后index重新排序方式

    pandas dataframe拼接后index重新排序方式

    這篇文章主要介紹了pandas dataframe拼接后index重新排序方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python使用docx模塊編輯Word文檔

    Python使用docx模塊編輯Word文檔

    docx提供了一組功能豐富的函數(shù)和方法,用于創(chuàng)建、修改和讀取Word文檔,Python可以用它對(duì)word文檔進(jìn)行大批量的編輯,下面小編就來通過一些示例為大家好好講講吧
    2023-07-07
  • python實(shí)現(xiàn)給字典添加條目的方法

    python實(shí)現(xiàn)給字典添加條目的方法

    這篇文章主要介紹了python實(shí)現(xiàn)給字典添加條目的方法,是比較實(shí)用的字典操作技巧,實(shí)例備有簡(jiǎn)單的注釋,需要的朋友可以參考下
    2014-09-09

最新評(píng)論

天台县| 常宁市| 宁南县| 金湖县| 房产| 绥棱县| 衡东县| 蓝山县| 驻马店市| 纳雍县| 洪雅县| 贵港市| 河北省| 宣汉县| 博罗县| 苏州市| 黔东| 乌审旗| 新平| 柏乡县| 宜良县| 永嘉县| 岳普湖县| 射阳县| 宝兴县| 独山县| 肥乡县| 高安市| 滦平县| 临海市| 苏尼特右旗| 来凤县| 仁化县| 平舆县| 类乌齐县| 潮安县| 和龙市| 崇信县| 卓尼县| 普宁市| 邛崃市|