溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

受用一生的 PyCharm 技巧大全(二)

發(fā)布時間:2020-07-25 11:55:18 來源:網(wǎng)絡(luò) 閱讀:273 作者:學(xué)Python派森 欄目:編程語言

這個系列的一些小技巧,對于一些重試用戶來說可能是小 case,如果你覺得簡單,直接略過即可,不是所有人都像你一樣,是個天才,在你之外,仍然有許多剛?cè)腴T的小伙伴。

6. 神一樣的調(diào)試技巧

假如我們在一個爬蟲的項(xiàng)目中,會使用到 正則表達(dá)式 來匹配我們想要抓取的內(nèi)容。正則這種東西,有幾個人能夠一步到位的呢,通常都需要經(jīng)過很多次的調(diào)試才能按預(yù)期匹配。在我們改了一次正則后,運(yùn)行了下,需要重新向網(wǎng)站抓取請求,才能發(fā)現(xiàn)沒有匹配上,然后又改了一版,再次運(yùn)行同樣需要發(fā)起請求,結(jié)果還是發(fā)現(xiàn)還是沒有匹配上,往往復(fù)復(fù),正則不好的同學(xué)可能要進(jìn)行幾十次的嘗試。

(上面這個例子可能不太貼切,畢竟是有很多種方法實(shí)現(xiàn)不用重新發(fā)請求,只是列舉了一種很笨拙且低效的調(diào)試過程,你看看就好了。)

而我們在這幾十次的調(diào)試中,向同一網(wǎng)站發(fā)起請求都是沒有意義的重復(fù)工作。如果在 Pycharm 中可以像 IPython Shell 和 Jupyter Notebook 那樣,可以記住運(yùn)行后所有的變量信息,可以在不需要重新運(yùn)行項(xiàng)目或腳本,只需稍微調(diào)整下我們的代碼,直接就可以進(jìn)行正則調(diào)試。

答案當(dāng)然是有。

假如我在調(diào)試如下幾行簡單的代碼。在第 3 行處打了個斷點(diǎn)。然后點(diǎn)擊圖示位置 Show Python Prompt 按鈕。

受用一生的 PyCharm 技巧大全(二)

就進(jìn)入了 Python Shell 的界面,這個Shell 環(huán)境和我們當(dāng)前運(yùn)行的程序環(huán)境是打通的,使用的是同一個 namespace,這下你可以輕松地進(jìn)行調(diào)試了。學(xué)習(xí)過程中有不懂的可以加入我們的學(xué)習(xí)交流秋秋圈784中間758后面214,與你分享Python企業(yè)當(dāng)下人才需求及怎么從零基礎(chǔ)學(xué)習(xí)Python,和學(xué)習(xí)什么內(nèi)容。相關(guān)學(xué)習(xí)視頻資料、開發(fā)工具都有分享

受用一生的 PyCharm 技巧大全(二)

上面我們打了個斷點(diǎn),是為了方便說明這個效果。并不是說一定要打斷點(diǎn)。如果不打斷點(diǎn),在腳本執(zhí)行完成后,也仍然可以在這個界面查看并操作所有變量。

受用一生的 PyCharm 技巧大全(二)

現(xiàn)在我們已經(jīng)可以滿足我們的調(diào)試的需求,但是每次運(yùn)行腳本,都要手動點(diǎn)擊Show Python Prompt ,有點(diǎn)麻煩。嗯?其實(shí)這個有地方可以設(shè)置默認(rèn)打開的。這個開頭還比較隱秘,一般人還真發(fā)現(xiàn)不了。

你需要點(diǎn)擊圖示位置 Edit Configurations 處。

受用一生的 PyCharm 技巧大全(二)

然后在這里打勾選中。

受用一生的 PyCharm 技巧大全(二)

設(shè)置上之后,之后你每次運(yùn)行后腳本后,都會默認(rèn)為你存儲所有變量的值,并為你打開 console 命令行調(diào)試界面。

除了上面這種方法,其實(shí)還有一種方法可以在調(diào)試過程中,執(zhí)行命令表達(dá)式,而這種大家可能比較熟悉了,這邊也提一下,就當(dāng)是匯總一下。但是從功能上來說,是沒有上面這種方法來得方便易用的。因?yàn)檫@種方法,必須要求你使用 debug 模式運(yùn)行項(xiàng)目,并打斷點(diǎn)。

使用方法就是,在你打了斷點(diǎn)后,在圖示位置處,點(diǎn)擊右鍵使用 Evaluate Expression

受用一生的 PyCharm 技巧大全(二)

就彈出了一個 Evaluate Expression 窗口,這里 可以運(yùn)行命令表達(dá)式,直接操作變量。

受用一生的 PyCharm 技巧大全(二)

7. 指定參數(shù)執(zhí)行腳本

你在 Pycharm 運(yùn)行你的項(xiàng)目,通常是怎么執(zhí)行的?我的做法是,右鍵,然后點(diǎn)擊 Run,或者使用快捷鍵 Shift + F10 。

有時候,在運(yùn)行/調(diào)試腳本的時候,我們需要指定一些參數(shù),這在命令行中,直接指定即可。

假設(shè)在命令行中,運(yùn)行腳本的命令是這樣

python main.py init --local

對于剛使用 Pycharm 的同學(xué),可能并不知道 Pycharm 也是可以指定參數(shù)的。點(diǎn)擊下圖位置

受用一生的 PyCharm 技巧大全(二)

進(jìn)入設(shè)置面板,在 Script parameters 中填入?yún)?shù)即可。學(xué)習(xí)過程中有不懂的可以加入我們的學(xué)習(xí)交流秋秋圈784中間758后面214,與你分享Python企業(yè)當(dāng)下人才需求及怎么從零基礎(chǔ)學(xué)習(xí)Python,和學(xué)習(xí)什么內(nèi)容。相關(guān)學(xué)習(xí)視頻資料、開發(fā)工具都有分享

受用一生的 PyCharm 技巧大全(二)

同時在上圖的底部,你可以看到,這里可以很方便的切換 解釋器,比你跑到這邊來要容易得多吧

受用一生的 PyCharm 技巧大全(二)

8. 搜索時過濾測試文件

接下來,介紹一個,我看框架源碼的時的一個小技巧,可能只適用一小部分人吧。

我平時會看的框架是 OpenStack ,我不知道其他框架是怎樣的,但在 OpenStack 里面帶有大量(真的很多)的單元測試文件。這給我在使用Find in Path 時帶來了不小的困擾,你可以從下圖的搜索結(jié)果中感受一下,搜索一個函數(shù),test 文件里的結(jié)果比 正常文件要多很多。

受用一生的 PyCharm 技巧大全(二)

這些測試文件的搜索結(jié)果,對于我們看源代碼不僅沒有任何幫助的,更重要的是還干擾視線。于是我就研究了一下,從文件名入手,只要在 File mask里填寫 !test* 可以將這些test文件過濾掉。搜索結(jié)果一下子清晰很多。

受用一生的 PyCharm 技巧大全(二)

9. 關(guān)閉煩人的燈泡提示

先來說下這個燈泡提示是什么,有什么用?

當(dāng)我們在代碼里面有語法錯誤,或者代碼編寫不符合 pep8 代碼規(guī)范時,鼠標(biāo)選擇有問題的代碼,就會自動彈出小燈泡,這個燈泡是有顏色之分的,如果是紅燈泡,一般都是語法問題,如果不處理會影響代碼運(yùn)行。而如果是黃燈泡,就只是一個提示,提示你代碼不規(guī)范等,并不會影響程序的運(yùn)行。

雖然這個燈泡,是出于善意之舉,但我認(rèn)為它確實(shí)有點(diǎn)多余(可能是我個人沒有使用它的習(xí)慣),要是語法錯誤會有紅色波浪線提示。你可能會說燈泡不僅起到提示的作用,它還可以自動糾正代碼,我個人感覺并沒有人工校正來得效率,來得精準(zhǔn)。

基于有時還會像知乎上這個朋友說的這樣,會擋住我們的代碼,會經(jīng)常誤點(diǎn),這確實(shí)也是一個煩惱。

我研究了下,Pycharm (2018版本)里是有開關(guān)按鈕的,將下圖中的這個選項(xiàng)(Show intention bulb)取消勾選,就可以關(guān)閉這個功能。

受用一生的 PyCharm 技巧大全(二)

10. 關(guān)閉礙眼的波浪線

下面我先給出了一小段代碼示例,思考一下,為什么name,my_name 不會有波浪線,而 myname 和 wangbm 會有波浪線呢?

受用一生的 PyCharm 技巧大全(二)

Pycharm 本身會實(shí)時地對變量名進(jìn)行檢查,如果變量名不是一個已存在的英文單詞,就會出現(xiàn)一條波浪線,當(dāng)一個變量里有多個單詞時,Python 推薦的寫法是用下劃線來分隔(其他語言可能會習(xí)慣使用駝峰式命名法 ,但 Python 是使用下劃線),所以在 Pycharm 看來 my_name 是規(guī)范的,而 myname 會被當(dāng)成是一個單詞對待,由于它在單詞庫里并沒有它,所以 myname 是不規(guī)范的。學(xué)習(xí)過程中有不懂的可以加入我們的學(xué)習(xí)交流秋秋圈784中間758后面214,與你分享Python企業(yè)當(dāng)下人才需求及怎么從零基礎(chǔ)學(xué)習(xí)Python,和學(xué)習(xí)什么內(nèi)容。相關(guān)學(xué)習(xí)視頻資料、開發(fā)工具都有分享

每個人的變量命名習(xí)慣不一樣,如何你在項(xiàng)目里大量使用了 myname 這種風(fēng)格的變量命名方法,像下面這樣(隨便找了一段 cloudinit 的代碼),是讓人挺不舒服的,總有一種代碼有 bug 的錯覺。

受用一生的 PyCharm 技巧大全(二)

那么如何關(guān)閉這個非語法級別的波浪線呢?很簡單,它的開關(guān)就在你的右下角那個像 人頭像 一樣的按鈕

受用一生的 PyCharm 技巧大全(二)

然后選擇 Syntax 級別的即可。同樣一段代碼,效果如下,干凈了很多。

受用一生的 PyCharm 技巧大全(二)

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI