python寫代碼調試技巧的簡單介紹

本文目錄一覽:

滿滿乾貨!20個Python使用的小技巧

本節對一些 Python 易混淆的操作進行對比。

1.1 有放回隨機採樣和無放回隨機採樣

1.2 lambda 函數的參數

1.3 copy 和 deepcopy

複製和變數別名結合在一起時,容易混淆:

對別名的修改會影響原變數,(淺)複製中的元素是原列表中元素的別名,而深層複製是遞歸地進行複製,對深層複製的修改不影響原變數。

1.4 == 和 is

1.5 判斷類型

1.6 字元串搜索

1.7 List 後向索引

這個只是習慣問題,前向索引時下標從0開始,如果反向索引也想從0開始可以使用~。

2.1 讀寫 CSV 文件

注意,當 CSV 文件過大時會報錯:_csv.Error: field larger than field limit (131072),通過修改上限解決

csv 還可以讀以 分割的數據

2.2 迭代器工具

itertools 重新定義了很多迭代器工具,例如子序列工具:

序列排序:

多個序列合併:

2.3 計數器

計數器可以統計一個可迭代對象中每個元素出現的次數。

2.4 帶默認值的 Dict

當訪問不存在的 Key 時,defaultdict 會將其設置為某個默認值。

2.5 有序 Dict

3.1 輸出錯誤和警告信息

向標準錯誤輸出信息

輸出警告信息

控制警告消息的輸出

3.2 代碼中測試

有時為了調試,我們想在代碼中加一些代碼,通常是一些 print 語句,可以寫為:

一旦調試結束,通過在命令行執行 -O 選項,會忽略這部分代碼:

3.3 代碼風格檢查

使用 pylint 可以進行不少的代碼風格和語法檢查,能在運行之前發現一些錯誤

3.4 代碼耗時

耗時測試

測試某代碼塊耗時

代碼耗時優化的一些原則

4.1 argmin 和 argmax

argmax同理。

4.2 轉置二維列表

4.3 一維列表展開為二維列表

python調試程序BUG的心得技巧分享

【導讀】相信各位Python工程師們在寫Python代碼的時候,免不了經常會出現bug滿天飛這種情況,這個時候我們可能就得一個標點一個標點的去排查,費時又費力,但是,我們又很難發現到底是其中的哪一個步驟,導致了這些問題的出現。導致這些問題的其中一個原因,就是我們沒有養成良好的編程習慣。編程習慣就好比是電影中的特效。電影特效越好,呈現出來的觀影效果也自然越好。同樣,如果我們能夠養成好的編程習慣,在查找錯誤的時候,自己的思路就會更加清晰。下面是小編整理的解決Python項目bug的心得技巧分享,包含六小點,希望對大家有所幫助。

方法一:使用項目管理工具

無論Python項目簡單與否,我們都應該使用Git進行版本控制。大部分支持Python的IDE(集成開發環境)都內置了對Git這一類項目管理工具的支持。

我們在修改代碼時,常常會出現改著改著程序就崩了的情況,改出的最新版本有時候還不如上一個版本。而Git,恰好能夠及時幫我們保存之前的版本。使用了它以後,我們也不需要不停地用「ctrl+z」來撤回代碼了。

方法二:使用Python的內置函數

Python的內置函數和標準庫都可以處理常見的用例,而不需要自己重新定義函數。

但是,剛剛入門的Python開發人員們對其中的函數並不熟悉。所以他們經常會遇到這樣一個問題——在不需要記住內容的情況下,如何才能知道標準庫中的內容是否涵蓋了自己的用例?最簡單的方法是將標準庫索引和內置函數概述頁添加為書籤,並且在遇到「日常編程」類問題的時候立即瀏覽一下。我們使用這些函數的頻率高了,自然也就能記住這些函數了。

方法三:使用正確的模塊

與內置函數和標準庫一樣,Python中大量的第三方模塊集合,也可以幫助我們節省大量的人力。通過PyPI的Web前端,可以針對我們的問題觸發搜索詞,我們很容易就能找到適合自己的解決方案。

方法四:使用OOP

面向對象編程(OOP)將數據結構與用於操作它們的方法捆綁在一起,從而使編寫高級代碼更加容易。OOP非常適合用於Python這一類高級語言,尤其是項目非常複雜的時候。熟悉Python的開發人員都知道,使用OOP可以減少代碼量,從而節省大量的時間。

但是,也不是所有的項目都需要使用OOP。如果項目沒有特別要求,一些小型的項目就可以不用OOP。

方法五:編寫測試代碼並不斷測試

一個好的程序員一定知道測試之於項目的重要性。編寫測試代碼的確是一個很枯燥的過程,但是不進行測試,我們就無法發現程序的問題所在。

如果一個項目非常複雜的話,我們就必須要做到及時測試。越早測試,就能越早發現問題。而不是說等代碼全部寫完了,才開始進行測試,這樣反而會導致更多的錯誤和更大的工作量。

當然,我們也可以尋找專業的軟體測試人員,來幫助我們進行測試。這樣我們也可以把更多的精力投入到項目程序本身。

方法六:選擇正確的Python版本

部分人仍然在使用Python2,但Python官方的開發團隊早已經不對這一版本進行維護了。聰明的開發人員都已經將Python2里的項目遷移到Python3中了。

Python目前的最新版本是Python3.8.5,但也不是說你一定要使用最新版本。專業的軟體開發人員都知道,任何軟體的最新版本都不一定是最好的,因為它仍需要開發團隊不斷地去改良。程序員一般都會使用在最新版本之前的一個版本,舊版本相對而言是比較成熟的。

無論是運用哪一種語言編寫代碼,優秀的程序員都具備良好的編程習慣。這些習慣不僅能夠讓我們思路更加清晰,也可以幫助我們減輕工作量,從而節省大量的時間。所以,可能你離優秀的程序員,只差一個好習慣了哦~

以上就是小編今天給大家整理髮送的關於「解決Python項目BUG的心得技巧分享」的相關內容,希望對大家有所幫助。小編認為要想在大數據行業有所建樹,需要考取部分含金量高的數據分析師證書,這樣更有核心競爭力與競爭資本。

調試python代碼的方法有哪些

本文討論在沒有方便的IDE工具可用的情況下,使用pdb調試python程序

源碼例子

例如,有模擬稅收計算的程序:

#!/usr/bin/python

def debug_demo(val):

if val = 1600 :

print “level 1”

print 0

elif val = 3500 :

print “level 2”

print (val – 1600) * 0.05

elif val = 6500 :

print “level 3”

print (val – 3500) * 0.10 + (3500-1600) * 0.05

else:

print “level 4”

print (val – 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05

#~def debug_demo

if __name__ == “__main__”:

debug_demo(4500)

debug_demo函數計算4500的入賬所需的稅收。

如何調試?

1.加入斷點

在需要插入斷點的地方,加入紅色部分代碼:如果_DEBUG值為True,則在該處開始調試(加入_DEBUG的原因是為了方便打開/關閉調試)。

#!/usr/bin/python

_DEBUG=True

def debug_demo(val):

if _DEBUG == True:

import pdb

pdb.set_trace()

if val = 1600 :

print “level 1”

print 0

elif val = 3500 :

print “level 2”

print (val – 1600) * 0.05

elif val = 6500 :

print “level 3”

print (val – 3500) * 0.10 + (3500-1600) * 0.05

else:

print “level 4”

print (val – 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05

#~def debug_demo

if __name__ == “__main__”:

debug_demo(4500)

2.開始運行調試

運行程序./debug_demo.py,得到

/usr/local/qspace/user_network/debug_demo.py(7)debug_demo()

– if val = 1600 :

(Pdb)

– val = 1600 : 指示當前執行的語句,(Pdb)等待你的調試指令. pdb的指令很豐富,輸入h指令可以查看指令的使用方法。下面簡單介紹常用指令:

查看代碼上下文,l(小寫L)

(Pdb) l

2 _DEBUG=True

3 def debug_demo(val):

4 if _DEBUG == True:

5 import pdb

6 pdb.set_trace()

7 – if val = 1600 :

8 print “level 1”

9 print 0

10 elif val = 3500 :

11 print “level 2”

12 print (val – 1600) * 0.05

(Pdb)

左邊是行號,右邊是代碼正文。

監視變數:p 變數名

(Pdb) p val

4500

(Pdb)

單步執行: n

– elif val = 3500 :

(Pdb) l

5 import pdb

6 pdb.set_trace()

7 if val = 1600 :

8 print “level 1”

9 print 0

10 – elif val = 3500 :

11 print “level 2”

12 print (val – 1600) * 0.05

13 elif val = 6500 :

14 print “level 3”

15 print (val – 3500) * 0.10 + (3500-1600) * 0.05

加入斷點:b 行號

(Pdb) b 14

運行到斷點: c

(Pdb) c

/*****

– print “level 3”

(Pdb) l

9 print 0

10 elif val = 3500 :

11 print “level 2”

12 print (val – 1600) * 0.05

13 elif val = 6500 :

14 B- print “level 3”

15 print (val – 3500) * 0.10 + (3500-1600) * 0.05

16 else:

17 print “level 4”

18 print (val – 6500) * 0.20 + (6500-3500) * 0.10 + (3500-1600) * 0.05

19

執行到函數返回前: r

(Pdb) r

level 3

195.0

–Return–

/****()

-None

– print (val – 3500) * 0.10 + (3500-1600) * 0.05

(Pdb)

說明:

pdb還有很多其他很多有用的指令,讀者可以自行探索。輸入h,h 命令。就可以得到命令的詳細幫助。

不過,我個人認為一般無需啟動這種調試方法,一般使用日誌輸出進行調試即可,除非遇到了非常微妙的錯誤。這時,單步調試的威力便顯示出來了

原創文章,作者:簡單一點,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/127413.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
簡單一點的頭像簡單一點
上一篇 2024-10-03 23:15
下一篇 2024-10-03 23:15

相關推薦

  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟體開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟體開發中,UML圖是必不可少的重要工具之一。它為軟體架構和各種設計模式的…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論