Python IDE:PyCharm中的那些實(shí)用功能

到目前為止,我用Eclipse已經(jīng)有一些年頭了,大部分的時(shí)間都是用來寫Python(安裝Pydev插件)以及C++(安裝CDT插件)。

最近我從一個(gè)好友那聽說了PyCharm以及它新的免費(fèi)社區(qū)版logr。我這個(gè)朋友用Eclipse也很長(zhǎng)時(shí)間了,對(duì)PyCharm也是贊不絕口,所以我決定至少在家辦公的時(shí)候試著用用PyCharm。目前為止,我已經(jīng)深深的喜歡上了它,甚至于在日常工作時(shí)也用PyCharm(社區(qū)版采用Apache2授權(quán))。

以下我將會(huì)介紹一些在我在使用PyCharm時(shí)感到驚奇的一些事情。

聲明

我無意批評(píng)Eclipse或者PyDev,我用了它們很多年,它們很棒!請(qǐng)記住,這是我的個(gè)人經(jīng)驗(yàn),你的或許有所不同。

實(shí)時(shí)比較

PyCharm 對(duì)一個(gè)文件里你做的改動(dòng)保持實(shí)時(shí)的跟蹤,通過在編輯器的左側(cè)欄顯示一個(gè)藍(lán)色的標(biāo)記。

這一點(diǎn)非常方便,我之前一直是在Eclipse里面用命令“Compare against HEAD” 來比較一個(gè)文件前后的改動(dòng)。

在PyCharm中,你可以對(duì)你的改動(dòng)一覽無余。同時(shí),點(diǎn)擊那個(gè)標(biāo)記,會(huì)顯示出之前的內(nèi)容以及一個(gè)工具欄:

你可以很容易地回滾這些改動(dòng),在一個(gè)詳盡的對(duì)話框中查看這些改動(dòng)或是將之前的文本粘貼到剪切板上。

提交時(shí)的比較預(yù)覽

在Eclipse 中,當(dāng)你提交改動(dòng)時(shí),會(huì)有一個(gè)提交對(duì)話框向你展示將要被提交的文件列表。

你可以雙擊其中任意一項(xiàng)來查看改動(dòng)的對(duì)比:這時(shí)候,如果你看到代碼里一些想修改的地方(比如一個(gè)拼錯(cuò)的單詞,一段

遺漏的文檔,等等),那可就不爽了:你必須關(guān)閉所有的東西(包括帶有你精心寫好的提交注釋的提交框),去找到那處惹人煩的代碼,改正,然后從頭再來一遍。

PyCharm 有同樣的特性,但是你的改動(dòng)是可編輯的。我簡(jiǎn)直不能再去強(qiáng)調(diào)可以當(dāng)場(chǎng)修正那些錯(cuò)誤有多么棒啦!

在提交過程中,我可以很容易地修復(fù)像上面那些類似的拼寫錯(cuò)誤。

一個(gè)額外好處是,無論你因?yàn)楹畏N原因關(guān)閉了提交對(duì)話框,當(dāng)再次嘗試提交時(shí),它會(huì)保留你剛才填寫的那些提交注釋。

提交時(shí)檢查

在提交過程中,我們還可以在實(shí)際提交前執(zhí)行其他一些選項(xiàng),像“優(yōu)化導(dǎo)入(排序并移除未使用過的導(dǎo)入)“,檢查變動(dòng)集合中的待完成項(xiàng)等等。

一個(gè)有意思的地方是”執(zhí)行代碼分析“那一項(xiàng)。。。

代碼審查

你可以讓PyCharm在一個(gè)文件,目錄或整個(gè)項(xiàng)目里執(zhí)行“代碼審查”操作。它會(huì)在無需實(shí)際執(zhí)行程序的情況下,

找出存在問題以及相應(yīng)的改進(jìn)辦法,比如類型檢查,可靜態(tài)的方法,違反代碼規(guī)范等等問題。

正如在上一節(jié)中解釋過的,這也可以在提交時(shí)在發(fā)生改動(dòng)的文件中自動(dòng)完成。這是一個(gè)文件一次審查之后的結(jié)果:

對(duì)于其中一些審查結(jié)果來說,你還可以應(yīng)用一個(gè)修復(fù)建議。例如,對(duì)于“Function call can be replaced with set literal()”這一建議,我們可以選擇相應(yīng)的選項(xiàng)來修復(fù)。

PyCharm 會(huì)將這句:

extensions=set(['.avi','.mp4','.mpg','.mkv'])

自動(dòng)替換為:

extensions = {'.avi','.mp4','.mpg','.mkv'}

你可以關(guān)閉任何你不希望的審查,包括在項(xiàng)目一級(jí)。

重構(gòu)

我一直在試圖重命名一個(gè)模塊,可在菜單項(xiàng)里一直找不到那一項(xiàng)。。。F2也無濟(jì)于事。

突然我注意到文件子菜單下面的”重構(gòu)/重命名“一項(xiàng),就想。。。會(huì)是它嗎?果然就是!

在你重命名一個(gè)模塊時(shí),PyCharm會(huì)詢問你是否需要自動(dòng)修改所有與之關(guān)聯(lián)的項(xiàng)目。有福了!

還有很多其他的重構(gòu)項(xiàng)目,但目前為止我還沒有機(jī)會(huì)一一嘗試。

關(guān)于過時(shí)代碼的提示以及改進(jìn)建議

PyCharm可以告訴你代碼里面過時(shí)的結(jié)構(gòu)塊,并且提出一些改進(jìn)建議。比如,我有像下面一段這樣的代碼:

with nested(open(filename1),open(filename2)) as (f1, f2):

<代碼塊>

PyCharm會(huì)明顯的標(biāo)注出nested:

我用的是Python2.7,事實(shí)上你可以使用嵌套上下文管理器,但是,唉,我還得支持python的一些老版本,就保留了nested。

但PyCharm提醒了我,這個(gè)事情本身還是很酷的。

任務(wù)+特性 分支

如同Eclipse一樣(需要Mylin支持),PyCharm也支持基于任務(wù)的工作流(包括任務(wù)感知的上下文)。

然而PyCharm本身自帶了很多直接可用的連接器(GitHub,Mantis,Jira,Bugzilla,等等)。

而且,當(dāng)你開啟一項(xiàng)任務(wù)時(shí),它會(huì)詢問你是否想要?jiǎng)?chuàng)建那個(gè)任務(wù)的一個(gè)特性分支,分支的名字可以配置。

這就避免了必須手動(dòng)創(chuàng)建一個(gè)新的分支,而這個(gè)操作確實(shí)挺繁瑣的(拿到任務(wù)的ID,選擇名稱,等等)。

這個(gè)是加分項(xiàng)。

快速

我觀察到PyCharm在執(zhí)行代碼的自動(dòng)完成時(shí)掃瞄代碼的速度要遠(yuǎn)快于Eclipse,而且還不打斷你當(dāng)前的工作。

當(dāng)你想保存一個(gè)文件時(shí),Eclipse會(huì)阻止你這么做因?yàn)樗诤笈_(tái)執(zhí)行一個(gè)任務(wù),這有多惹人煩。。。

快速查看文檔

當(dāng)你把光標(biāo)挪到一個(gè)函數(shù)、方法,類或者別的什么上的時(shí)候,你會(huì)得到一個(gè)選項(xiàng)來瀏覽”快速文檔“??匆谎郏?/p>

正如你看到的,它會(huì)用一種賞心悅目的格式展示方法的文檔說明,還從代碼使用說明中提示了參數(shù)的類型。。。即使該函數(shù)沒有對(duì)應(yīng)的文檔說明,你還是會(huì)得到像下面這樣的一個(gè)說明:

很好!

Docutils 支持

PyCharm 還包括了對(duì)于doctils的一流支持,這讓它很容易從集成開發(fā)環(huán)境中直接再生成文檔。

另一方面,它還包括了一個(gè)非常好的富文本(譯者注:ReST即reStructuredTexteditor)編輯器(比Eclipse的IMHO好用的多):

完善的插件系統(tǒng)

跟據(jù)我的使用經(jīng)驗(yàn),在Eclipse里面安裝插件是件挺痛苦的事情:

很難找到你想要去的地方(提示: 幫助/安裝新軟件。。。);

你沒有一個(gè)單一的索引,所以你得去網(wǎng)上去找那些插件源;

系統(tǒng)有時(shí)會(huì)因?yàn)閹斓囊蕾噯栴}而崩潰,結(jié)果我就沒裝上那些我想要的插件(工作中還有其他人也同樣遇到這個(gè)問題,最后不得不放棄);

PyCharm的插件體驗(yàn)則要流暢地多。

首先,它位于一個(gè)你認(rèn)為它有可能會(huì)存在的地方:就在”設(shè)置”下面的一項(xiàng):

你可以很容易地瀏覽插件:

我快速安裝了一個(gè)標(biāo)記編輯器(和ReST一樣),一個(gè)臨時(shí)存放代碼片段的插件,可以讓我直接從選擇的文本中快速地剪貼,并且預(yù)覽代碼,和SublimeText類似,還用一個(gè)漂亮的代碼外觀。

結(jié)語

目前為止就這些了。我會(huì)向我的朋友盡力展示一切我認(rèn)為“看這有多酷”的事情。我使用PyCharm的時(shí)間很短,如果我發(fā)現(xiàn)還有更多有趣的事情值得再寫一篇發(fā)表的話,我會(huì)繼續(xù)寫。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,872評(píng)論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評(píng)論 19 139
  • “我有拖延癥”就是中了拖延癥的毒,給了自己一個(gè)欲罷不能的拖延結(jié)果。 為了更好的管理自我,那么我的把這個(gè)概念從大腦里...
    CSir205閱讀 249評(píng)論 0 0
  • 人生中第一次軍訓(xùn),悄然而至…… 操場(chǎng)秋點(diǎn)兵,萌新靜坐,接受了太陽光一個(gè)上午的粉飾。 超級(jí)萌教練新生,...
    不早也不晚閱讀 375評(píng)論 2 16
  • 隨著互聯(lián)網(wǎng)的發(fā)展,從在2005年開始,前端工程師角色被行業(yè)認(rèn)可,到了2010年,互聯(lián)網(wǎng)進(jìn)入移動(dòng)互聯(lián),前端工程師...
    黃琪超閱讀 444評(píng)論 0 0

友情鏈接更多精彩內(nèi)容