Pycharm學(xué)習(xí)教程(3) 代碼運(yùn)行調(diào)試
Pycharm代碼運(yùn)行調(diào)試,具體內(nèi)容如下
1、準(zhǔn)備工作
(1)Python版本為2.7或者更高版本
?。?)已經(jīng)創(chuàng)建了一個(gè)Python工程并且添加了內(nèi)容,具體參考: Getting Started tutorial
2、第一步——運(yùn)行代碼
打開之前編寫的Solver.py文件,在編輯框中右鍵,選擇快捷菜單中的“Run 'Solver'”選項(xiàng)。
此時(shí)腳本文件正常運(yùn)行并在調(diào)試工具窗口中顯示程序的輸出值:
接下來(lái)我們對(duì)這兩步操作的具體內(nèi)容做詳細(xì)的解釋。
3、什么是Run/Debug模式
每個(gè)需要運(yùn)行/調(diào)試的腳本文件都需要一個(gè)特殊的配置文件來(lái)指定其腳本名稱、所在目錄以及其他重要的運(yùn)行調(diào)試信息。Pycharm已經(jīng)集成了這種配置文件,避免用戶手動(dòng)去創(chuàng)建。
每次當(dāng)你單擊Run或者Debug按鈕時(shí)(或者在快捷菜單中執(zhí)行相同操作),實(shí)際上都是將當(dāng)前的運(yùn)行/調(diào)試配置文件加載到當(dāng)前的調(diào)試模型中。
如果你仔細(xì)觀察第一張圖片就會(huì)發(fā)現(xiàn),在組合框中根本就沒有 run/debug的相關(guān)信息,知道第二張圖片中它們才出現(xiàn)。這就意味著當(dāng)執(zhí)行運(yùn)行/調(diào)試命令的時(shí)候,Solver腳本的run/debug配置文件才會(huì)自動(dòng)生成,正如現(xiàn)在所顯示的這樣。
此時(shí)再主工具欄中Run(綠色箭頭按鈕)和Debug(綠色甲殼蟲按鈕)兩個(gè)按鈕變得可用:
同時(shí)這兩個(gè)圖標(biāo)還是半透明,也就意味著他們臨時(shí)的,即由Pycharm自動(dòng)創(chuàng)建的。
OK,單擊下拉箭頭查看當(dāng)前的可用命令操作:
如果你已經(jīng)設(shè)置了多個(gè)run/debug配置方案,它們將都會(huì)顯示在這里下拉列表中,單擊選中一個(gè)作為當(dāng)前工程的run/debug配置文件。
4、保存run/debug配置信息
在上圖的下拉列表中,單擊Edit configuration選項(xiàng),打開run/debug配置編輯窗口:
在左側(cè)目錄中將會(huì)出現(xiàn)兩個(gè)節(jié)點(diǎn):Python和Default。在第一個(gè)節(jié)點(diǎn)目錄下有一個(gè)單一的配置選項(xiàng)'Solver',在第二個(gè)選項(xiàng)下則有很多配置信息。
這意味著什么呢?
在Default節(jié)點(diǎn)下,你只能看到框架的名稱或者模式名稱,如果你創(chuàng)建一個(gè)新的Run/Debug配置文件,它將會(huì)在所選中的模式分支下進(jìn)行創(chuàng)建,如果你更改了Default節(jié)點(diǎn)下的設(shè)置,相應(yīng)的與其相關(guān)的所有配置文件都會(huì)更改。
例如,你想將Pycharm中所用到的Python解釋器替換成遠(yuǎn)程或者本地解釋器,就可以通過更改Python頁(yè)面下的解釋器設(shè)置,這樣所有新建的調(diào)試配置文件都會(huì)使用這個(gè)新的解釋器。
早Python節(jié)點(diǎn)下,只用單一的配置選項(xiàng)'Solver',它屬于Python類型的配置,但與Default節(jié)點(diǎn)下的Python機(jī)制并不相同,它使用一個(gè)非透明的圖標(biāo)進(jìn)行的表示,這是用來(lái)指示當(dāng)前配置文件的保存狀態(tài)的,當(dāng)你保存配置文件之后圖標(biāo)即變?yōu)榉峭该鳡顟B(tài)。例如,我們?cè)赑ython類型下為當(dāng)前的Solver腳本新建一個(gè)配置文件,取名'Solver1'。
如果你對(duì)已存在的配置文件做了任何更改,這些更改只會(huì)應(yīng)用于對(duì)應(yīng)的腳本區(qū)域。
5、正式運(yùn)行
我們已經(jīng)能夠通過一種非常直接的方式,接下來(lái)我們尋求其他方法來(lái)運(yùn)行腳本。
正如我們所知,運(yùn)行腳本意味著加載當(dāng)前的調(diào)試配置文件,因此,運(yùn)行腳本主要遵循以下流程:
(1)在主工具欄中,單擊run/debug組框,確認(rèn)當(dāng)前的調(diào)試配置文件信息
(2)做下面的工作(三選一即可):
單擊運(yùn)行按鈕,加載配置文件
按下Shift+F10快捷鍵
在主菜單上,選擇Run → Run
此時(shí),我們可以在Run tool window.窗口中觀察程序的運(yùn)行結(jié)果。
6、運(yùn)行測(cè)試程序
我們這里并不討論代碼測(cè)試的重要性,而是探討Pycharm如何幫助我們完成這一功能。
7、選擇一個(gè)測(cè)試器
首先,需要指定一個(gè)測(cè)試器。單擊工具欄的設(shè)置按鈕,打開Settings/Preferences對(duì)話框,然后單擊進(jìn)入Python Intergated Tools頁(yè)面(可以通過搜索功能找到),默認(rèn)選擇如下:
在這里我們選擇Nosetests,保存并關(guān)閉對(duì)話框。
8、創(chuàng)建一個(gè)test程序塊
首先我們創(chuàng)建一個(gè)test實(shí)例。Pycharm提供了一種非常智能的創(chuàng)建測(cè)試代碼的方法:?jiǎn)螕暨x中類名然后按下Ctrl+Shift+T快捷鍵,或者在主菜單中選擇Navigate → Test,如果test程序已存在,則會(huì)直接跳轉(zhuǎn)到對(duì)應(yīng)代碼,否則創(chuàng)建它:
按照系統(tǒng)提示進(jìn)行操作,Pycharm會(huì)顯示如下對(duì)話框:
單擊OK按鈕,查看創(chuàng)建結(jié)果:
此時(shí)Pycharm已經(jīng)自動(dòng)創(chuàng)建了一個(gè)測(cè)試類,當(dāng)然這只是一個(gè)類框架,需要我們手動(dòng)編寫測(cè)試函數(shù)。
9、運(yùn)行測(cè)試代碼
一切就緒后,右擊測(cè)試類名,在彈出的快捷菜單中選擇運(yùn)行命令:
觀察運(yùn)行狀態(tài)欄中 Test Runner tab的輸出結(jié)果:
10、調(diào)試運(yùn)行
首先要弄清楚,為什么要進(jìn)行調(diào)試?假設(shè)我們的程序在運(yùn)行過程中命中了一個(gè)錯(cuò)誤,那我們?nèi)绾味ㄎ诲e(cuò)誤發(fā)生的位置?這就需要進(jìn)行調(diào)試。
在Pycharm中我們可以在其中直接對(duì)程序進(jìn)行調(diào)試,唯一需要做的準(zhǔn)備工作就是在程序必要的地方加設(shè)斷點(diǎn),接下來(lái)我們進(jìn)行詳細(xì)的介紹:
11、什么是斷點(diǎn)?
一個(gè)breakpoint標(biāo)記了一個(gè)行的位置,當(dāng)程序運(yùn)行到該行代碼的時(shí)候,Pycharm會(huì)將程序暫時(shí)掛起以方便我們對(duì)程序的運(yùn)行狀態(tài)進(jìn)行分析。Pycharm支持若干中類型的斷點(diǎn) types of breakpoints,可以通過對(duì)應(yīng)圖標(biāo)進(jìn)行分辨。
這里我們采用Python的行斷點(diǎn)為例進(jìn)行介紹
12、設(shè)置斷點(diǎn)
方法非常簡(jiǎn)單,單擊代碼左側(cè)的空白灰色槽即可:
注意斷點(diǎn)會(huì)將對(duì)應(yīng)的代碼行標(biāo)記為紅色,這種顏色標(biāo)記目前還不能被用戶所更改,我們會(huì)盡快出臺(tái)解決方案。
順便說(shuō)一句,取消斷點(diǎn)的操作也很簡(jiǎn)單,在同樣位置再次單擊即可。
當(dāng)你將鼠標(biāo)指針懸停在斷點(diǎn)上方時(shí),Pycharm會(huì)顯示斷點(diǎn)的關(guān)鍵信息,行號(hào)以及腳本屬性,如果你希望更改該斷點(diǎn)的屬性,右擊斷點(diǎn):
可以嘗試對(duì)斷點(diǎn)屬性進(jìn)行個(gè)性化更改,然后觀察圖標(biāo)的變化。
13、代碼調(diào)試
接下來(lái),我們正式開始對(duì)代碼進(jìn)行調(diào)試。
首先從配置文件組框中選擇同名的'Solver'文件作為當(dāng)前調(diào)試的配置文件,然后單擊調(diào)試按鈕(綠色甲殼蟲樣式的按鈕):
接下來(lái)會(huì)Pycharm會(huì)執(zhí)行以下操作:
?。?)PyCharm開始運(yùn)行,并在斷點(diǎn)處暫停
(2)斷點(diǎn)所在代碼行變藍(lán),意味著Pycharm程序進(jìn)程已經(jīng)到達(dá)斷點(diǎn)處,但尚未執(zhí)行斷點(diǎn)所標(biāo)記的代碼。
(3)Debug tool window窗口出現(xiàn),顯示當(dāng)前重要調(diào)試信息,并允許用戶對(duì)調(diào)試進(jìn)程進(jìn)行更改。
雖然Pycharm使用手冊(cè)中已經(jīng)完整提供了調(diào)試窗口中所有控件的功能信息,我們這里仍然對(duì)其進(jìn)行簡(jiǎn)要介紹。我們發(fā)現(xiàn)窗口分為兩個(gè)選項(xiàng)卡:Debugger tab and the Console tab。
(1)Debugger窗口分為三個(gè)可見區(qū)域:Frames, Variables, 和 Watches。這些窗口列出了當(dāng)前的框架、運(yùn)行的進(jìn)程,方便用戶查看程序空間中變量的狀態(tài)等。當(dāng)你選擇一個(gè)框架,就會(huì)顯示出相關(guān)的變量信息,當(dāng)然這些區(qū)域都是可以折疊隱藏的。
?。?)Console窗口顯示當(dāng)前的控制臺(tái)輸出信息,默認(rèn)這個(gè)窗口位于Debugger之下,可以通過單擊其標(biāo)簽將其前置顯示。
當(dāng)然我們可以改變這些窗口的擺放位置,如果你不喜歡程序的默認(rèn)排版的話。具體參加Moving tabs and areas章節(jié)。
Debugger窗口的工作模式:
OK,現(xiàn)在程序暫停在了第一斷點(diǎn)處,F(xiàn)rames窗口顯示的是Solver腳本的第7行代碼所對(duì)應(yīng)的進(jìn)程demo,相關(guān)變量a、b、c已經(jīng)定義,但變量d尚未進(jìn)行定義。接下來(lái)?
按下F9(或者左側(cè)工具欄的綠色箭頭),程序會(huì)繼續(xù)運(yùn)行到下一斷點(diǎn)處,通過這種方式你可以將每個(gè)斷點(diǎn)都運(yùn)行一遍,觀察變量的變化。
更多有關(guān) Debugger窗口的信息參見軟件手冊(cè):product documentation
Console窗口的工作模式:
為什么需要用到Console窗口呢?當(dāng)我們需要查看程序給出的錯(cuò)誤信息,或者進(jìn)行一些額外的臨時(shí)運(yùn)算時(shí),就需要在這個(gè)窗口里面進(jìn)行。
單擊Console選項(xiàng)卡使其前置:
然后單擊左側(cè)工具欄中的命令符按鈕,顯示Python的命令提示符:
此時(shí)激活了控制臺(tái)機(jī)制,嘗試在其中執(zhí)行一些Python命令:
注意到控制臺(tái)窗口提供了代碼的拼寫提示(Ctrl+Space)以及歷史記憶(Up/Down keys)功能,更多信息參見: Using Debug Console
最后,如果你希望Console窗口一直處于可用狀態(tài),只需將其移動(dòng)成為一個(gè)單獨(dú)的窗口即可:
14、再次運(yùn)行
在完成了本次調(diào)試運(yùn)行并再次加載調(diào)試配置文件之后,我們可以再次運(yùn)行調(diào)試,單擊工具欄的run按鈕即可。
15、REPL——在控制臺(tái)界面調(diào)試程序
最后,如果你更習(xí)慣工作于控制臺(tái)環(huán)境下,也可以將Pycharm設(shè)置成為控制臺(tái)模式。在主菜單中選擇Tools → Run Python Console...來(lái)加載控制臺(tái):
此時(shí)console窗口將會(huì)被激活,并顯示為一個(gè)單獨(dú)的窗口:
在這個(gè)控制臺(tái)窗口中我們可以做很多有意思的事情,接下來(lái)我們演示如何將最近編寫的Solver.py文件中的代碼導(dǎo)入到控制臺(tái):
打開Solver.py文件(打開的方法多種多樣,例如Ctrl+E - View → Recent Files),全選文件中的代碼內(nèi)容(Ctrl+A, or Edit → Select All),然后按下Alt+Shift+E(或者右擊在彈出的快捷菜單中選擇Execute Selection in Console):
此時(shí),Pycharm就會(huì)自動(dòng)將選中的代碼導(dǎo)入到控制臺(tái)界面,方便我們對(duì)其進(jìn)行編輯:
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
基于OpenCV的網(wǎng)絡(luò)實(shí)時(shí)視頻流傳輸?shù)膶?shí)現(xiàn)
這篇文章主要介紹了基于OpenCV的網(wǎng)絡(luò)實(shí)時(shí)視頻流傳輸?shù)膶?shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11import?sklearn報(bào)錯(cuò)正確安裝sklearn的解決方法
這篇文章主要介紹了import?sklearn報(bào)錯(cuò)正確安裝sklearn的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-04-04在pandas中遍歷DataFrame行的實(shí)現(xiàn)方法
這篇文章主要介紹了在pandas中遍歷DataFrame行的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10python 刪除系統(tǒng)中的文件(按時(shí)間,大小,擴(kuò)展名)
這篇文章主要介紹了python 如何刪除系統(tǒng)中的文件,分別按時(shí)間,大小,擴(kuò)展名刪除,滿足不同需求,感興趣的朋友可以了解下2020-11-11django與vue的完美結(jié)合_實(shí)現(xiàn)前后端的分離開發(fā)之后在整合的方法
今天小編就為大家分享一篇django與vue的完美結(jié)合_實(shí)現(xiàn)前后端的分離開發(fā)之后在整合的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2019-08-08pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題
這篇文章主要介紹了pycharm解決關(guān)閉flask后依舊可以訪問服務(wù)的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧2020-04-04pytorch保存和加載模型的方法及如何load部分參數(shù)
本文總結(jié)了pytorch中保存和加載模型的方法,以及在保存的模型文件與新定義的模型的參數(shù)不一一對(duì)應(yīng)時(shí),我們?cè)撊绾渭虞d模型參數(shù),對(duì)pytorch保存和加載模型相關(guān)知識(shí)感興趣的朋友一起看看吧2024-03-03