日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何調(diào)試您的Python代碼?

對于碼農(nóng)而言,如果說能夠編寫出有效的代碼,會給他們帶來滿滿的成就感的話;那么當其代碼中出現(xiàn)缺陷、甚至是錯誤時,他們則會產(chǎn)生深深的挫敗感。因此,為了避免在軟件運行的過程中,出現(xiàn)各種意想不到的錯誤,我們需要通過針對程序的調(diào)試,來消除各種代碼級別的錯誤。本文將以Python為例,和您討論八種有關(guān)代碼調(diào)試的優(yōu)秀實踐。

站在用戶的角度思考問題,與客戶深入溝通,找到通道網(wǎng)站設計與通道網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:網(wǎng)站制作、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名與空間、雅安服務器托管、企業(yè)郵箱。業(yè)務覆蓋通道地區(qū)。

何為Python異常?

每當Python無法解釋某段目標代碼或命令時,程序往往會拋出異常。Python的各種異常,實際上是Python在執(zhí)行代碼時,出現(xiàn)的一組錯誤集合。

通常,Python會使用try和except塊,來觸發(fā)各種錯誤異常。由于可執(zhí)行的命令往往位于try塊之內(nèi),因此當try中的代碼出現(xiàn)失敗時,Python就會去執(zhí)行except塊中的代碼。也就是說,except關(guān)鍵字中的語句本質(zhì)上就是try塊中的那些異常,Python只是將它們作為錯誤而觸發(fā)罷了。當然,一個try...except塊有時候也可能會包含多個帶有except關(guān)鍵字的異常。其中包含了許多我們在Python中常見的典型錯誤與詳細信息。

由于我們在使用各種內(nèi)置函數(shù)、軟件庫或Python框架時,都可能會碰到異常,因此,即便您認真編寫和遵守了正確的語法,也無法保證相關(guān)方法在調(diào)用和執(zhí)行時不會出錯。例如,您可能只編寫了大約5行代碼,但是Python程序會發(fā)現(xiàn)到您正在使用的某個庫、框架或內(nèi)置方法的源代碼中,存在著預定義的相關(guān)異常,因此會在第200行處觸發(fā)異常錯誤。

語法錯誤

當程序代碼無法在語法層面上被識別時,Python通常會拋出語法級別的錯誤。如果您是Python的初學者,那么就可能會頻繁地遇到此類語法錯誤。不過,由于這些錯誤比那些深層次的異常(in-depth exceptions)更易于被追溯,因此您一旦掌握了基本原理,就很容易對它們進行合理的處理。

如何調(diào)試你的Python代碼

Python的典型異常包括:縮進、類型、以及名稱錯誤等方面。它們既可能來自單行代碼,也可能源于某個代碼塊。我們雖然沒有統(tǒng)一的方法對其進行處置,但是可以根據(jù)各種實例和項目類型,去予以應對。下面,讓我們來具體討論可用于調(diào)試Python的八種方法。它們既可以被單獨使用,也能夠通過組合來增強效果。

1.檢查錯誤描述

處理Python錯誤的可用方法之一是查看錯誤的描述。Python通常會在其錯誤輸出的最后一行給予詳細的說明。例如:在解析意外的EOF(End Of File)時,我們會發(fā)現(xiàn)它們通常與缺少括號有關(guān)。也就是說,當您嘗試著從類或?qū)ο筇幷{(diào)用某個錯誤的函數(shù)時,就會出現(xiàn)AttributeError之類無效的語法(invalid syntax)錯誤。因此,通過最終一行的“蛛絲馬跡”,您往往能夠成功地追蹤錯誤的來源,并著手重寫其相關(guān)的代碼。

2.追蹤錯誤的來源

Python的錯誤具有較強的代碼行限定性(line-bound),在遇到錯誤時,您需要注意Python所指向的具體行號。例如,由于下面的代碼會嘗試著連接不同的數(shù)據(jù)類型(字符串和整數(shù)),因此會產(chǎn)生類型方面的錯誤(type error)。其錯誤信息指向了示例代碼中的第2行:

示例代碼:

 
 
 
 
  1. db = open("output.txt", "a") 
  2. a = "Hello"+1 
  3. b = "How do you do?" 
  4. db.write(a+", "+b+" 
  5. ") 

錯誤信息:

 
 
 
 
  1. raceback (most recent call last): 
  2.   File "C:\Users\Omisola Idowu\Desktop\Lato 
  3. oup 
  4. ew.py", line 2, in  
  5.     a = "Hello"+1 
  6. TypeError: can only concatenate str (not "int") to str 

下面讓我們再來看另一個錯誤示例:

代碼:

 
 
 
 
  1. def findTotal(a): 
  2.     for i in a 
  3.         print(sum(i)*2) 

錯誤信息:

 
 
 
 
  1. File "C:\Users\Omisola Idowu\Desktop\Lato 
  2. oup 
  3. ew.py", line 2 
  4.     for i in a 
  5.              ^ 
  6. SyntaxError: invalid syntax 

顯然,Python指出了第2行的語法錯誤。如果您熟悉Python的話,就能夠一眼看出:實際上,這是因為在for循環(huán)后面缺少的一個冒號。

3.在命令行上利用Trace方法

雖然您可以使用內(nèi)置的集成開發(fā)和學習環(huán)境(Integrated Development and Learning Environment,IDLE)去調(diào)試Python,但是它不一定適合大型的軟件項目。因此,調(diào)試Python的可用方法之一實際上是采用命令行界面(command-line interface,CLI)。它與在JavaScript中運行console.log()有著相似的效果。

如果您在代碼執(zhí)行過程中遇到了錯誤,則可以啟動CLI,并使用trace命令去試著運行有問題的腳本。其基本工作原理是對代碼進行逐行檢查,并對發(fā)現(xiàn)問題的地方予以解析。

若要調(diào)用該方法,請在命令行中,以如下方式運行代碼文件:

 
 
 
 
  1. python -m trace --trace file_name.py 

在大型項目中,雖然以上述方式運行整個腳本并不切實際,但是您可以創(chuàng)建一個單獨的Python文件,將每個代碼塊(一次僅一段)逐個粘貼到該文件中,然后分別運行上述命令。在此,您可以將其視為單元性調(diào)試的一種特有形式。

4.測試您的代碼

除了上述提到的異常原因之外,錯誤的布爾值(boolean)有時也會導致您的程序在部署中表現(xiàn)異常或出現(xiàn)錯誤。單元測試往往涉及到需要隔離代碼中的某些單元(塊或行),以測試具體的性能、效率、以及正確性等指標。它們對于程序代碼而言都是極其重要的。在單元測試中,我們可以使用多種調(diào)試技術(shù),來通過assert函數(shù)對代碼的正確性進行分析,以及檢查代碼在運行過程中所需的時間等維度指標。

在實際生產(chǎn)環(huán)境中,我們可以創(chuàng)建一個名為test.py的單獨Python文件,并在該文件中測試每個代碼單元。如下代碼段展示了單元測試的一個示例:

 
 
 
 
  1. data = { 
  2. "guitars":[ 
  3. {"Seagull":"$260"}, 
  4. {"Fender":"$700"}, 
  5. {"Electric-acoustic":"$600"} 
  6. if len(data["guitars"])==2: 
  7.     for i in data["guitars"]: 
  8.         print(i) 
  9. assert len(data["guitars"])==2, "Length less than what's required, should be 3" 

可見,由于數(shù)組的長度小于3,因此Python會觸發(fā)如下斷言錯誤:

 
 
 
 
  1. AssertionError: Length less than what's required, should be 3 

5.使用日志

作為調(diào)試代碼的另一種方法,Python內(nèi)置了一套日志庫,可供日志的檢查與勘誤。您可以通過鏈接--https://docs.python.org/3/howto/logging.html,來進一步了解其工作原理,以及如何在控制臺中的運行和捕獲它們。如果您覺得在部署應用的過程中,無法通過控制臺來查看到日志,則可以通過設置簡單郵件傳輸協(xié)議(SMTP),以便于將代碼日志以電子郵件的方式及時捕獲與分析。

6.使用標準的Python調(diào)試器

Python有一個被稱為pdb的、非常流行的板載調(diào)試器。由于它是內(nèi)置的,因此您只需要將pdb導入待測試文件中即可。pdb模塊可以通過對代碼采取事后執(zhí)行(post-mortem)的方式,來調(diào)試程序在運行過程中出現(xiàn)的突然崩潰現(xiàn)象。

您既可以將pdb用于運行整個Python文件,也可以僅執(zhí)行某個單元,以深入到程序的每一行去發(fā)現(xiàn)潛在的錯誤。在實際使用中,您需要首先打開Python文件,然后通過importpdb;pdb.set_trace(),來啟動pdb調(diào)試器。接著,您可以通過CLI運行待測試的Python文件(請參見--https://www.makeuseof.com/run-python-script/):

 
 
 
 
  1. Python Your_Python_file.py 

通過如下帶有h的命令,您可以查看到pdb的所有可用命令列表:

 
 
 
 
  1. (pdb) h 

列表的輸出如下圖所示:

例如,您可以通過如下命令,來逐行羅列出代碼:

 
 
 
 
  1. (pdb) l 

7.使用IDE進行調(diào)試

IDE也是用于調(diào)試Python腳本的寶貴工具。其中:

  • Visual Studio Code(https://code.visualstudio.com/download)能夠協(xié)助您運行與調(diào)試Python程序中的各項功能。
  • 作為一種語言類支持插件,Pylance可允許您在調(diào)試的模式下運行自己的代碼。
  • 作為另一個出色的IDE,Pycharm(https://www.jetbrains.com/pycharm/download/)可以幫助您更加深入地查找代碼中的錯誤。
  • Eclipse(http://www.eclipse.org/downloads/packages/)也提供了一個名為Pydev的第三方插件,以實現(xiàn)針對Python腳本的輕松調(diào)試。

8.在網(wǎng)上搜索解決方案

鑒于Python具有龐大的開發(fā)者社區(qū),您不妨將互聯(lián)網(wǎng)作為尋找解決Python代碼問題的可靠資源。例如,Stackoverflow(https://stackoverflow.com/)便是一個流行的代碼社區(qū),您可以在其中進行各種互動式的問答。當然,YouTube上也包含了大量的有關(guān)Python編程的實用視頻。


網(wǎng)頁題目:如何調(diào)試您的Python代碼?
分享鏈接:http://www.5511xx.com/article/cohisos.html