① 調試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 命令。就可以得到命令的詳細幫助。
不過,我個人認為一般無需啟動這種調試方法,一般使用日誌輸出進行調試即可,除非遇到了非常微妙的錯誤。這時,單步調試的威力便顯示出來了
② 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代碼
JetBrains 公司出品的集成開發環境以製作精良風格一致得到廣泛好評,PyCharm 作為其中一款針對 Python 語言的 IDE 給了我很多幫助,感覺比較好用的是這個遠程調試。
遠程調試的代碼部署在遠端伺服器上,通過網路傳輸使用本機進行單步調試。實用場景為本機為非 GPU 機器,可以在遠端 GPU 伺服器上運行程序,觀察程序運行過程中,各個變數在斷點處的當前值。
本機打開程序,新建一個configuration
如上圖所示
類型為遠程調試
填寫 本機 ip和埠,
python2.x拷貝pycharm-debug.egg到遠端機器,python3.x拷貝的是pycharm-debug-py3k.egg
程序中加入
sys.path.append('/path/to/your/remote/pycharm-debug.egg')
import pydevd
pydevd.settrace('172.18.76.241', port=8602, stdoutToServer=True, stderrToServer=True)123
本機先debug此configuration,然後遠端再運行,默認斷點為pydevd.settrace的下一行
④ eclipse 怎麼調試python代碼
步驟
1、配置Eclipse
1.1、Run -> Debug Configurations
1.2、右鍵Python Run -> New
1.3、配置新實例
1.3.1、選擇Main標簽,設置參數
設置Name為:fw;
選擇Project為:fw工程;
選擇Main Mole為:manage.py :
1.3.2、選擇Arugment標簽,設置參數 在Program arguments裡面設置值為 runserver --noreload
2、修改TEMPLATE_DIRS值為絕對路徑
在我們工程中將PAGES_PATH、RESOURCES_PATH修改為本地磁碟絕對路徑即可,如: PAGES_PATH = 'D:/neteye/npfm/app_media/Pages'
RESOURCES_PATH = 'D:/neteye/npfm/app_media/Resources'
3、啟動調試模式
點擊Debug->New_configuration
⑤ python怎麼運行代碼
Python在執行時,首先會將.py文件中的源代碼編譯成Python的byte code(位元組碼),然後再由Python Virtual Machine(Python虛擬機)來執行這些編譯好的byte code。這種機制的基本思想跟Java,.NET是一致的。
然而,Python Virtual Machine與Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一種更高級的Virtual Machine。
這里的高級並不是通常意義上的高級,不是說Python的Virtual Machine比Java或.NET的功能更強大,而是說和Java 或.NET相比,Python的Virtual Machine距離真實機器的距離更遠。或者可以這么說,Python的Virtual Machine是一種抽象層次更高的Virtual Machine。
基於C的Python編譯出的位元組碼文件,通常是.pyc格式。除此之外,Python還可以以交互模式運行,比如主流操作系統Unix/Linux、Mac、Windows都可以直接在命令模式下直接運行Python交互環境。直接下達操作指令即可實現交互操作。
⑥ 運行python程序的兩種方式
運行python程序的兩種方式是什麼?python有兩種運行方式:互動式和腳本式。互動式可以通過cmd命令行窗口或者IDEL實現,而腳本式通過寫一個腳本(.py結尾的文檔)實現。其中互動式主要用於簡單的python運行或者測試調試python時用到,而腳本式是運行python程序的主要方法。
第一,互動式,通過Windows命令行工具進行互動式運行python。同時按下Windows鍵和R鍵,啟動「運行」,在「運行」中輸入cmd然後回車,即彈出命令行工具,然後輸入python回車,即出現如下界面。
第二,然後輸入print('Helloworld!'),既可以敲一行代碼,與python交互一次,python執行一次。
第三,通過IDEL互動式運行python。從「開始」中找到Python->IDEL,如下圖。
第四,啟動IDEL後,同樣輸入print('Helloworld!'),既可以敲一行代碼,與python交互一次,python執行一次。只不過IEDL中python代碼可以高亮顯示。
第五,腳本式運行python,在IDEL中點擊file->newfile,就會彈出一個未命名(Untitled)的腳本窗口,然後輸入如下代碼,並按Ctrl+S保存。
#20181216攝氏溫度和華氏溫度之間轉換
t=input('請輸入帶有單位符號的溫度(例如37C或者100F):')
ift[-1]in('f','F'):
C=(eval(t[:-1])-32)/1.8 #如果輸入為華氏溫度,那麼轉換為攝氏溫度
print('轉變為攝氏溫度%.2fC為:'%C)
elift[-1]in('c','C'):
F=eval(t[:-1])*1.8+32 #如果輸入為攝氏溫度,那麼轉換為華氏溫度
print('轉變為華氏溫度%.2fF為:'%F)
else:
print('輸入格式有誤,請輸入帶有單位符號的溫度(例如37C或者100F):')
第六,按F5運行上一步保存的***.py腳本,就會出現如下界面,提示:請輸入帶有單位符號的溫度(例如37C或者100F),隨便輸入一下就行,即通過腳本運行了python。
那麼,有關運行python程序的兩種方式的內容,小編就介紹到這里了。小夥伴們可以用心了解一下哦!
本篇文章使用以下硬體型號:聯想小新Air15;系統版本:win10;軟體版本:python3.0。
⑦ python如何一步步調試
裝個Pycharm
1 添加斷點
2 Debug下運行代碼:
3 F8:進行下一步操作
F7 :跳入下一個方法中
⑧ Sublime Text 2下編寫python代碼如何進行調試
1.有SublimeREPL應該就可以調試了,輸入沒問題,調試的時候記得選
tools->SublimeREPL->python->run
current
file
或者
pdb
current
file
(pdb
是調試工具,類似gdb)
不要用預設的build
或者
ctrl-b
2.運行調試前別忘了保存,要不不會運行修改後的文件
⑨ 如何在 Python 中使用斷點調試
在eclipse下可以單步調試python的方法:
1、右鍵單擊標尺欄添加斷點
2、將滑鼠移至需要添加斷點的代碼行,使用快捷鍵 Ctrl+F10,在彈出的菜單欄中選擇 」Add Breakpoint」 添加斷點。
添加好斷點後,選擇 Debug As -> Python Run 啟動調試器,彈出一個對話框,詢問是否切換到調試器透視圖,單擊 Yes,即顯示調試模式。
3、調試器透視圖
程序調試過程中,常用的幾個快捷鍵如下:
單步跳入 Step Into: F5
單步跳過 Step Over: F6
單步返回 Step Return: F7
重新開始 Resume: F8
在控制台 Console 中,顯示出斷點之前代碼的執行結果。如果要查看某個變數的值,以變數 a 為例,可以手動在控制台中鍵入一行代碼 」print 『a is:』, a」,再連續按兩次 Enter 鍵,即顯示出變數的值。
⑩ python代碼怎麼debug
在需要插入斷點的地方,加入紅色部分代碼:如果_DEBUG值為True,則在該處開始調試(加入_DEBUG的原因是為了方便打開/關閉調試)。
#!/usr/bin/python
_DEBUG=True
def debug_demo(val):
if _DEBUG == True:
import pdb
pdb.set_trace()