久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

如何調(diào)試Python程序

 石頭p4g54puvpz 2017-06-05

工欲善其事,必先利其器,。程序猿們往往喜歡挑一個最愛的開發(fā)環(huán)境,。可是Pycharm,,Eclipse,,Komodo,Eric,,WingWare,。。,。這么多Python的IDE看花眼了怎么辦,?即使你用baidu大法選好了一個你滿意的,然后各種秘籍快捷都用熟用爛了,。如果有一天,,我是說如果,你心目中的女神找你幫忙看看代碼,,“你好,,能幫我看一下這個問題是怎么回事嗎?”,,你心想我苦苦修煉的各種招式終于派上用場了,。懷揣著激動和夢想跑過去一看,結(jié)果女神的機器并沒有安裝你用的爛熟的高大上工具,,只有代碼編輯器和終端命令窗口,,這時你該如何讓女神對你刮目相看?不想杯具的話,,就繼續(xù)閱讀吧,。

即使不用IDE你也應(yīng)該有一套自己的獨門秘笈,這里介紹介紹我的,。

1. print大法

print大法一定是初學(xué)者首選,。

覺得哪里有問題,就把哪里的變量打印出來看看,。

  • 優(yōu)點: 簡單易行

  • 缺點: release前要全注釋掉,,增加重復(fù)工作量,不能忍


2. logging工具

使用系統(tǒng)庫logging將print改為logging.debug(),,就可以通過配置level達到log分級輸出,。

DEBUG<><><>CRITICAL

import logginglogging.basicConfig(        level=logging.WARNING,        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',        datefmt='%a, %d %b %Y %H:%M:%S'        )logging.debug('This is debug message')logging.info('This is info message')logging.warning('This is warning message')

上面程序運行發(fā)現(xiàn),,log只顯示warning信息。如果再加上filename參數(shù)還能很方便的支持輸出log到文件,,比如:

import logginglogging.basicConfig(        level=logging.WARNING,        format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',        datefmt='%a, %d %b %Y %H:%M:%S',        filename='test.log',        filemode='w')

從此我就喜歡上logging,,只在代碼編寫初期順手用一下print

不過有時候我預(yù)先并不知道問題在哪里,我也不是大牛,,我羨慕那些用著支持?jǐn)帱c調(diào)試開發(fā)環(huán)境的猿類,。直到我遇到新的朋友。

3. pdb

pdb是python自帶的調(diào)試庫,,當(dāng)我想讓程序停在某個地方,,然后一步一步運行程序并且查看變量時,我只需要加入下面的代碼

a=1
b=2
import pdbpdb.set_trace()c=b*ad=b/a
print d,c

然后有n(ext),,s(tep),,c(ontinue), b(reak),cl(ear)等一系列命令支持,,我就等于有了一套支持?jǐn)帱c調(diào)試的開發(fā)環(huán)境,。

可是這里還是有個問題,就是剛才加入的調(diào)試代碼在release前還要注釋掉,。

pdb的作者一定也考慮了這個問題,。因此有了命令形式進入調(diào)試模式,。

python -m pdb script.py

代碼會在一開始停住,,相當(dāng)于你在程序開始運行第一行加了個斷點。然后用命令b(reak)在你希望的行上加斷點,,然后c(ontinue)就可以啦,。

用了pdb,媽媽再也不用擔(dān)心我調(diào)程序了,??墒前职钟幸蓡柫恕S袝r候程序運行好久忽然崩潰了,,我還不知道它崩在哪里,,意思就是斷點都不知道設(shè)在哪,怎么辦,。

怎樣在崩潰時自動進入調(diào)試模式,,這個問題困擾我很久,直到我學(xué)會上stackoverflow,,發(fā)現(xiàn)這個牛人聚集的地方,。

4. ipython

當(dāng)你在有問題的代碼前加上這段代碼,它就可以幫助你在異常時進入ipdb調(diào)試模式,。前提是你要安裝ipython,。

import sys
from IPython.core import ultratbsys.excepthook = ultratb.FormattedTB(mode='Verbose',     color_scheme='Linux', call_pdb=1)

你也可以把上面的代碼保存成crash_debug.py,,然后在你出問題的文件test.py頭上加上

import crash_debug
for i in range(10,-1,-1):    y=1/i # 這里當(dāng)i=0時程序會報錯。

執(zhí)行python test.py后輸出如下:


大功告成,。有了這四大法寶,,我就再沒有糾結(jié)過裝哪個開發(fā)環(huán)境的問題,女神再找我,,無需IDE我也能show一把我的抓蟲大法,。

你有什么獨門秘笈,別藏著掖著了,,也拿來分享一下吧,。

沒有人不愛惜自己的生命,卻很少人珍視自己的時間

梁實秋


  注:

  1. 轉(zhuǎn)載需全文轉(zhuǎn)載,,且注明原文鏈接,,否則保留維權(quán)權(quán)利。

  2. 如對文中所提方法有疑問或建議的地方,,歡迎和我聯(lián)系service_at_heibanke.com,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多