偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

像老大一樣調(diào)試Python

開(kāi)發(fā) 后端
上面的一段代碼有木有很像你平時(shí)調(diào)試代碼的樣子?好吧,我原來(lái)也是這樣。老實(shí)說(shuō),這并不壞。敲一些print進(jìn)去,運(yùn)行代碼,然后看會(huì)發(fā)生什么。你肯定需要在輸出里面翻來(lái)翻去的,但你能找到你想要的結(jié)果。
  1. def make_pie(self, ingredients): 
  2.     print '******WHAT IS GOING ON HERE******' 
  3.     print ingredients 
  4.     self.oven.preheat() 
  5.     print self.oven.temperature 

上面的一段代碼有木有很像你平時(shí)調(diào)試代碼的樣子?好吧,我原來(lái)也是這樣。老實(shí)說(shuō),這并不壞。敲一些print進(jìn)去,運(yùn)行代碼,然后看會(huì)發(fā)生什么。你肯定需要在輸出里面翻來(lái)翻去的,但你能找到你想要的結(jié)果。至少,當(dāng)你知道你想要什么。不過(guò)通常不是這樣,如果你知道檢驗(yàn)些什么,你可能就不會(huì)需要打印那些 輸出了。反而,你把一些print代碼扔到你覺(jué)得可能有問(wèn)題的地方,然后反復(fù)的移動(dòng)這些語(yǔ)句,知道發(fā)現(xiàn)真正的bug。就是二分查找嘛!

謝天謝地,有一個(gè)更好的方法。從C語(yǔ)言開(kāi)始,有一類(lèi)被稱(chēng)為調(diào)試器的工具在每種語(yǔ)言里都出現(xiàn)了。Python也不例外,里面就有一個(gè)默認(rèn)的調(diào)試器。還有一些社區(qū)開(kāi)發(fā)的很酷的調(diào)試器。在接下來(lái)的內(nèi)容里,我會(huì)談?wù)勔恍┍容^流行的調(diào)試工具。

Pdb

debugpython2

首先來(lái)說(shuō)Python里內(nèi)建的調(diào)試器,pdb。它利用一個(gè)簡(jiǎn)單的命令行界面,還有很多你在用調(diào)試器時(shí)用得上的功能。幫助系統(tǒng)能為你指出你能運(yùn)行的命令,比如單步調(diào)試代碼,操縱調(diào)用棧和設(shè)置斷點(diǎn)。

一些它缺少的功能:按tab能讓本地變量自動(dòng)補(bǔ)全和讓代碼和棧追蹤更好看的配色和布局。

不管你最后決定使用哪種調(diào)試器,pdb是值得你花時(shí)間了解它的,有兩個(gè)原因:1)它在Python里總是可用的 2)很多其他的調(diào)試器的功能是pdb的超集,先學(xué)pdb能讓你更快的學(xué)習(xí)其他的調(diào)試器。

總之,如果有更好的還是用別的調(diào)試器吧。

Pydbgr

debugpython3

接下來(lái)是pydbgr(支持Python 3.2+ 版本),這個(gè)項(xiàng)目是對(duì)pydb調(diào)試器的重寫(xiě)。它提供了與pdb非常相似的一組命令,盡管如此,有一些有用的別名比如’u’表示’up’是沒(méi)有的。

這個(gè)調(diào)試器做得很好的一點(diǎn)是能夠?qū)?zhí)行流向進(jìn)行細(xì)粒度地控制。你可以輸入命令并指定命令重復(fù)執(zhí)行的次數(shù)。你也可以告訴調(diào)試器在某些事件觸發(fā)時(shí)停止,比如函數(shù)調(diào)用和返回,這能讓你減少很多調(diào)試的步數(shù)。

調(diào)試器的另一個(gè)特性是提供了其他調(diào)試器沒(méi)有的功能,它能通過(guò)像examine 和disassemble這樣的命令來(lái)進(jìn)行非常低級(jí)別的符號(hào)檢查。說(shuō)實(shí)話(huà),我不太確定這個(gè)功能在web開(kāi)發(fā)里被證明很有用,但它能讓你的工作很不同。

總之:它對(duì)pdb添加的特性我覺(jué)得不是對(duì)web開(kāi)發(fā)很有用的。

pudb

debugpython4

 

這個(gè)調(diào)試器里最明顯的亮點(diǎn)就是它在終端里融合了一個(gè)迷你圖形界面。這很正確,這不是一個(gè)分開(kāi)的窗口,這是在終端里面。除了一組用于強(qiáng)調(diào)的默認(rèn)顏色(它能夠定制或選擇一組默認(rèn)的主題),這在調(diào)試器的交互上是一個(gè)新穎的嘗試。

左邊的面板顯示當(dāng)前文件的代碼(或者你在棧里上下移動(dòng)的其他文件)。導(dǎo)航欄非常棒,包含箭頭鍵(以及’hjkl’對(duì)喜愛(ài)vim的群眾),搜索,并且 能用模糊查詢(xún)打開(kāi)其他的模塊。能把這些簡(jiǎn)單的行為用一個(gè)快捷鍵結(jié)合起來(lái)執(zhí)行光標(biāo)位置的代碼,并且有非常直觀(guān)和友好的方式來(lái)單步調(diào)試程序。當(dāng)然,pudb仍 然提供了正常的斷點(diǎn)和單步命令使你能隨心所愿地控制代碼的執(zhí)行。

在右邊,有幾個(gè)面板來(lái)追蹤當(dāng)前的本地變量,棧,和存在的斷點(diǎn)。這在你鍵入 locals(),whereh或者用tab完成來(lái)反射當(dāng)前框架時(shí)與典型的終端調(diào)試器非常不一樣,

這個(gè)調(diào)試器的另一個(gè)優(yōu)點(diǎn)是它支持事后分析。當(dāng)你命中一個(gè)異常,調(diào)試器會(huì)用一個(gè)很快的鍵來(lái)提示你這個(gè)異常。它也能讓你直接跳到發(fā)生了異常的那一行,同時(shí)能讓棧和變量保持完好。

總結(jié):擁有這堆調(diào)試器里最好的用戶(hù)體驗(yàn);對(duì)于棧追蹤特別有用。

Ipdb

debugpython5

最后一個(gè)就是iPython里的ipdb。就像它的 *pdb 的兄弟們,它的界面是一個(gè)簡(jiǎn)單的命令行并且它的幫助系統(tǒng)是個(gè)非常值得深入研究的地方。讓這貨與眾不同的是它使用了一個(gè)iPython shell,所以所有的tab 完成和對(duì)象反射的功能都用,能幫你發(fā)現(xiàn)究竟發(fā)生了什么。把這些與很棒的語(yǔ)法高亮和一個(gè)擁有最好的格式化的where命令結(jié)合起來(lái),就組成了一個(gè)干掉bug 的完美工具。

總結(jié):這是最棒的一個(gè)也是本人的最?lèi)?ài)。

我會(huì)提到,根據(jù)情況,我切換到pudb。它確實(shí)在瀏覽代碼是如何運(yùn)行方面是最棒的(比如當(dāng)你必須鉆研一個(gè)除了毛病的第三方庫(kù))。而我為什么最傾向于 ipdb,是因?yàn)榇蟛糠謺r(shí)候我對(duì)代碼都很熟悉,并不需要一個(gè)大圖片。我需要知道在一個(gè)指定的函數(shù)里是什么狀態(tài)。把它們結(jié)合起來(lái),就是超級(jí)超級(jí)NB的東西啦!

原文鏈接:https://zapier.com/engineering/debugging-python-boss/

譯文鏈接:http://blog.jobbole.com/52171/

責(zé)任編輯:陳四芳 來(lái)源: 伯樂(lè)在線(xiàn)
相關(guān)推薦

2013-12-31 09:19:23

Python調(diào)試

2014-02-27 13:10:57

Visual Stud調(diào)試

2025-09-12 00:00:00

DevToolsJavaScript調(diào)試術(shù)

2023-05-23 13:59:41

RustPython程序

2022-10-21 13:52:56

JS 報(bào)錯(cuò)調(diào)試本地源碼

2021-05-20 08:37:32

multiprocesPython線(xiàn)程

2022-08-26 08:17:32

Sidekick開(kāi)源

2023-04-05 14:19:07

FlinkRedisNoSQL

2017-05-22 10:33:14

PythonJuliaCython

2022-12-21 15:56:23

代碼文檔工具

2014-09-22 09:27:57

Python

2020-08-25 08:56:55

Pythonawk字符串

2015-03-16 12:50:44

2013-08-22 10:17:51

Google大數(shù)據(jù)業(yè)務(wù)價(jià)值

2012-06-08 13:47:32

Wndows 8Vista

2015-02-05 13:27:02

移動(dòng)開(kāi)發(fā)模塊SDK

2011-01-18 10:45:16

喬布斯

2021-12-14 19:40:07

Node路由Vue

2012-03-21 10:15:48

RIM越獄

2021-09-07 10:29:11

JavaScript模塊CSS
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)