下最流行的語言是Java和Python,但是程序員們最想了解和學習的語言則要屬Rust了。學習語言最重要的是選擇合適的材料,那么學習Rust的最佳途徑是啥呢?本文我們就來介紹一下。
Rust編程語言(doc.rust-lang.org/book/)是由Steve Klabnik和Carol Nichols編寫的一本免費書,是Rust學習入門必讀之書書。Rust編程語言是一本非常全面的文檔,它通過非常清晰的示例和一些有趣的項目來展示Rust語言的概念,書中的項目遍布每一個章節,從命令行猜謎游戲到多線程Web服務器都有涉獵。作為一本開放書籍,本身還有Rust社區維護,可以一直保持最新狀態,永遠不會過時,這對快速發展的語言來說尤為重要。 該書已經有中文版的翻譯,但是建議最好結合原版一起學習。
《Rust實例教程》(Rust by example)是另一本很棒的官方書籍。該教程結構上像一本書,但更像是個備忘錄。它分為小章節和子章節。每部分,可以在5分鐘內完成閱讀和學習,以了解基本的Rust概念。可以將其當做一本參考資料,并且在難以記住某些特定細節(例如如何編寫單元測試或的確切語法是什么)時可以隨時查閱。該材料主要立足于代碼,可以通過實際的代碼來真正實踐,當然很多代碼可以直接“拿來”使用。
Rustonomicon (doc.rust-lang.org/nomicon/)也是一本官方提供的開放書籍,適合那些已經對Rust有一定的基礎,很了解基礎代碼,并且確認可以把握更多、充滿信心并想要學習Rust Unsafe黑暗技巧的人。Rust可能包含Unsafe特性,只適合于高級程序員和類庫作者使用,但是確實提供了更大程度的自由。它意味著編譯器需要執行可能不安全的操作,如果不了解(不負責任)使用此功能,可能會帶一些問題。不安全的代碼不一定很糟糕,但是需要謹慎使用,本書將引導用戶了解開始編寫Unsafe Rust之前需要了解的所有細節。如果想避免出現不可把握的情況,請一定閱讀該手冊,記住那一句話“權力越大,責任也越大”!
《Rust設計模式》(Rust Design Patterns)也是一本開放書籍,著重于教給用戶Rust的慣用法。該書中探索了一些特定于Rust的概念,重新審視了經典的行為、創造和結構設計模式,使之適應Rust的慣用語法。也借此機會探索了慣用的Rust模式,例如 RAII和NewType。在學習語言時候,蟲蟲認為最重要的就是要“身臨其境”,即學習并用該語言的慣用語法來寫代碼,才能更加高效的學習高效的編程。而通常容易犯的一個錯誤就是“以此推彼”:“為什么Rust不支持xxx,java和python都有的”,如果這樣類比學習會非常苦惱,有些問題甚至是根本沒有答案。所有學習rust時候就忘記其他語言,而用rust通常是怎么寫的,怎么實現的,這樣就會一氣呵成,越來越順,而不是開頭就“卡殼”了。
Possible Rust是一個設計精美的語言站,談論“Rust實際可能實現的事情”。主要提供兩個主要部分:指南和模式。指南旨在解釋有趣的Rust概念,例如外部函數接口(FFI),Traits,枚舉等,而“模式”部分則嘗試探索有趣的陷阱,例如 “無法創建特征對象時可以做什么” 。目前內容還是有點稀少,但是該資源值得瀏覽并加入收藏,時常學習。
Easy Rust(dhghomon.github.io/easy_rust/),這是一本非常值得零基礎的人入門的教程。這是另一本開放書籍,它以一種簡單的方式解釋和處理Rust的概念,使它們更易于理解和理解,尤其是對于那些初次接觸Rust的人或來自其他高級語言的工程師。改善一些舉例和類比非常適用,會讓某些生澀的概念更好的理解,書中一些小例子也是非常好,比如對各種Rust類型的介紹例子,可以解決我們剛入Rust,不知道怎么下手寫代碼的情況。概述可以結合Rust官方的教程一起學習。喜歡看視頻學習(蟲蟲強烈不建議)的同學也有個好消息,就是該書配套的視頻教程也在油管上有了(youtube /playlist?list=PLfllocyHVgsRwLkTAhG0E-2QxCf-ozBkk)。
Learning Rust是有關Rust的另一個全面開放指南。該站分為幾個主要部分,介紹了Rust的基礎知識,還有一些更高級的概念,例如所有權,借用,泛型和Traits等。該資源著重于提供簡單的說明,并通過廣泛涉獵豐富代碼示例集的Rust代碼來促進學習。
Rust Cookbook自己定義為“一些簡單示例的集合,這些示例演示了使用Rust生態系統板條箱(crates,Rust的類庫)來完成常見編程任務的最佳實踐”。 Rust Cookbook也是一本開放書籍(使用mdbooks)構建,因此可以作為開放源代碼項目完全使用。本書的重點是補充了上面已經介紹的許多資源。它不嘗試探索語言的基礎,而是采取實用的態度來應對常見的日常問題,例如并發,壓縮,加密和數據結構。 對于這些領域中的每一個領域,它都提供了許多有趣的示例,并提出了一些通常用于解決這些問題的最常見的第三方庫。
too-many-lists(rust-unofficial.github.io/too-many-lists/fourth.html)材料很意義,它提供了大量有關的主題,包括不良集(Bad Stack),良好集(OK Stack),持續集(Persistent Stack)等等的鏈接。
這些主要是圍繞引用構建的,對于已經掌握一定Rust基礎,然后可以通過這些主題解決日常codeing過程中遇到的很多問題和解決方法,通過一系列失敗的嘗試,將學到許多有關Rust和借用檢查等的細節。
如果初步對Rust的知識充滿信心,并且希望以實用的方式開始探索更高級的主題,則該材料是最佳參考資源。
Tim McNamara的《Rust in Action》(Manning出版),是最值得推薦的圖書之一。
Rust in Action立足于實戰,通過構建有趣的項目(例如浮點數抽象,CPU仿真器,自定義文件格式,鍵值存儲數據庫等)來講解Rust概念。
圖書已經寫了很久,紙質版本書籍馬上會發行。目前該書可以通過Manning MEAP程序購買(可以獲得數字版本和所有更新)。
《Zero to Production in Rust》(自出版)是一本關于Rust的后端Web開發得非常好的書。
Luca在這個項目上投入了大量時間和精力。目前由于本書尚在編寫中,因此可以在新章節可用時立即閱讀。很高興看到社區如何參與該項目,以幫助作者從本書中獲得最大收益。
作者在整本書中使用的特殊樣式。在每一章中,在編寫任何代碼之前,都會有一整節內容涉及需求以及為什么我們真正需要構建特定功能。然后,每段代碼都有其自己的測試,而更改實際上是通過嚴格的測試驅動方法引入的。對于技術書籍來說,這是非常不尋常的,但這實際上就是大家喜歡這本書的原因。閱讀時,似乎正在與產品經理或團隊負責人進行對話,并且意識到實際上可以在工作中使用Rust,沒什么大不了的!
Luca正在整理一本圍繞一個主要示例的書:構建電子郵件訂閱平臺。乍一看,人們可能會認為這是一個非常簡單的示例,但實際上,該領域的復雜性足以填滿整本書,最重要的是,在此過程中學習Rust。
從本書中可以學到很多東西,不僅與Rust有關,甚至與產品開發和良好的軟件工程實踐有關。
Jim Blandy,Jason Orendorff和Leonora FS Tindall編寫的《Rust編程》(O'Reilly)是最受歡迎的Rust書籍之一。從第一版的書中,可以看到這是一本非常扎實的書。第二版預計在2021年夏天出版。
在第一版中,有些章節(特別是在第一章中)有些難以理解,作者一直在傾聽讀者的反饋意見并確保第二版將要發布時付出了很多努力。更加精致和貼切。
Rust編程語言是我們在本文開頭討論的實際“官方”同名書籍的印刷版。除了可以享受閱讀印刷書籍(并希望為作者提供支持)之外,其他沒有什么可補充的,這是一本很棒的書!
如果想了解有關Rust的更多信息,為什么它是一種出色的語言,為什么以及何時變得不那么好,以及它如何變得更好,可以看看的Amos(fasterthanlime)的博客 。
Amos具有非常引人入勝的寫作風格。 他可以寫很長的帖子,但是總是很有趣。
該博客中也提供了,可能大家都看過的一個教程《半小時了解Rust》。
Yoshua在JavaScript社區中一直是很有影響力的開發人員。他一直鼓舞人心,最近幾年中逐漸轉入到Rust,他一直在博客中記錄自己的Rust轉型之旅。
他的博客是學習異步Rust,流,迭代器等的好地方。Yoshua從事多個開源項目,并從總體上深入了解了異步的優缺點。其中有個教程《Async HTTP》值得大家研讀。
史蒂夫·克拉伯尼克(Steve Klabnik)是Rust社區中最有影響力的人之一。社區中一些最具影響力的Rust帖子就是源于他的博客。在他的博客中,有很多關于軟件工程的內容,以及其他語言及其問題(和解決方案)與Rust相比的更多內容。 其中值得研讀的文章有《Rust has finally outgrown me》
如果喜歡數據庫,性能優化,分布式系統,請看這個博客。作者撰寫了有關低級問題,技巧和竅門,Linux等的文章。他有一個開源項目 Sled ,如果想嘗試使用嵌入式數據庫和Rust 是一個了不起的工具。
Luca Palmieri撰寫的學習之旅博客,是學習Rust一種寶貴資源。他在在撰寫的系列教程:《Rust從零到生產環境》(Zero to Production in Rust),一些些章節以博客文章的形式出版。Luca是一位非常多產的作家,確實有很多不錯的資料,主要是關于使用Rust進行Web開發。
如果更喜歡通過視頻學習,或者只是喜歡觀看視頻資料,則可以參考一些油管頻道和Twitch流,以及B站上
最值得推薦的油管Rust頻道是 Ryan Levick的Streaming Rust(youtube /channel/UCpeX4D-ArTrsqvhLapAHprQ)。Ryan是微軟的工程師,他一直在花費時間制作Rust視頻材料。其頻道內容千差萬別,有適合初學者的介紹性視頻,也有更高級的視頻,如 static VS dynamic dispatch 或 FFI 。Ryan的教程擅長于解釋簡單和復雜的概念。每個視頻都是一點點的珍寶,示例無處不在。 他還在Twitch做直播教學。
Jon Gjengset是另一位出色的Rust主播,他的教程,言簡意賅,使復雜主題易于理解的能力。他目前有2個有關Rust的主要系列:
Crust of Rust:對于中級Rustucean來說是一個很好的系列,通過更高級的概念(例如迭代器,智能指針,變量生命周期等等)。
不安全紀事 :深入了解Rust unsafe的世界。
目前,不安全紀事 系列只有一個視頻,但是作者最近在Twitter上發布了內容,期望他將更多的時間花在創建令人興奮的新內容上。
Tim是《Rust in Action》的作者,他也是一位多產的視頻流媒體。他一直對Rust視頻系列進行了出色的介紹,該系列名為 Learn Rust Programming。我們認為該系列是從Rust開始的好地方。 我們最喜歡的視頻之一是Rust中的錯誤處理。他在油管和Twitch有教學專欄。
Genus-v programming是另一個很棒的YouTube頻道,其中包含一些有趣的Rust材料。它主要專注于用Rust進行Web開發,這是最值得學習的方面。毫無疑問,最喜歡的播放列表中的一個是 Rust網站開發,它展示了如何使用Actix構建GraphQL API和身份驗證服務器。
Systems with JT是Jonathan Turner的YouTube頻道。Jonathan是一個非常活躍的Rust開發人員,他是Nushell的作者,當然,在他的頻道中,他有很多關于Rust的視頻。Jonathan 最值得推薦的教程《how to create a line editor in Rust》系列。
非主流世界下鮮有的Rust語言視頻主播,雖然播放量都不咋高,但是聊甚于無,希望能再接再厲,有更好的教程和點播,Rust同學們路過時候不要錯過,給他們三連哦:
學習編程最重要的就是要實踐,通過學習和參與實際項目是學習編程的秘籍和捷徑,只親自上手操刀,才知道為啥要這個概念,為啥這種寫法可以提高效率等。通過學習Rust生態系統的一些優秀的項目可以短時間內快速提高我們的Rust功力:
Bat是cat命令的替代,但不光是簡單替換,可以實現語言的高亮顯示(非常漂亮)。
Clap是CLI幫助程序庫。
Tokio,Async-std 和 Smol 異步運行時框架。
Serde 序列化庫。
Rand 隨機數生成。
Chrono 日期和時間庫。
Amethyst和 Bevy 游戲開發框架。
mdbooks 通過markdown創建一本書。
TiKV 國產開源分布式數據Tidb的底層Key-Value 數據庫
以及其他更多(歡迎大家補充)。
源:機器之心
本文約7300字,建議閱讀8分鐘。
本文從 PyCharm 安裝到插件、外部工具、專業版功能等進行了一一介紹,希望能夠幫助到大家。
PyCharm 是一種 Python IDE,可以幫助程序員節約時間,提高生產效率。那么具體如何使用呢?
小編之前也沒系統地介紹過 PyCharm,怎樣配置環境、怎樣 DeBug、怎樣同步 GitHub 等等可能都是通過經驗或者摸索學會的。在本文中,我們并不會提供非常完善的指南,但是會介紹 PyCharm 最主要的一些能力,了解這些后,后面就需要我們在實踐中再具體學習了。
機器之心的讀者應該非常了解 JetBrains 開發的 PyCharm 了,它差不多是 Python 最常用的 IDE。PyCharm 可以為我們節省大量時間,它能夠管理代碼,并完成大量其他任務,如 debug 和可視化等。
本文將介紹:
本文假設讀者熟悉 Python 開發,且計算機中已安裝某個版本的 Python。該教程將使用 Python 3.6 版本,屏幕截圖和 demo 均來自 macOS 系統。由于 PyCharm 可在所有主流平臺上運行,讀者在其他系統中會看到略微不同的 UI 元素,可能需要調整某些命令。
PyCharm 安裝
本文將使用 PyCharm Community Edition 2019.1 版本,該版本免費且可在所有主流平臺上使用。只有最后一部分PyCharm Professional 功能使用的是 PyCharm Professional Edition 2019.1 版本。
推薦使用 JetBrains Toolbox App 安裝 PyCharm。使用該 App,你可以安裝不同的 JetBrains 產品或者同一產品的不同版本,并在必要的情況下更新、回滾和輕松刪除任意工具。你還可以在恰當的 IDE 及版本中快速打開任意項目。
Toolbox App 安裝指南,參見:
JetBrains 官方文檔:https://www.jetbrains.com/help/pycharm/installation-guide.html#toolbox
該 App 會根據你的操作系統提供合適的安裝說明。如果它無法無法準確識別系統,你可以在右上角的下拉列表中找到合適的系統。
安裝成功后,啟動該 app 并接受用戶協議。在 Tools 選項下,你可以看到一個可用產品列表。從中找到 PyCharm Community,并點擊 Install。
好啦,現在你的機器上已經安裝 PyCharm 了。如果不想使用 Toolbox app,你可以單獨安裝 PyCharm。
啟動 PyCharm,你將看到導入設置彈窗。PyCharm 會自動檢測出這是首次安裝,并為你選擇Do not import settings選項。點擊 OK,之后 PyCharm 會讓你選擇鍵盤映射(keymap scheme)。保留默認設置,點擊右下角的Next: UI Themes:
PyCharm 將詢問選擇深色模式 Darcula 還是淺色模式。你可以選擇自己喜歡的模式,并點擊Next: Launcher Script:
本教程將使用深色模式 Darcula。
在下一個頁面上,直接保留默認設置,并點擊Next: Featured plugins,這時 PyCharm 將展示可用插件列表。點擊Start using PyCharm,現在你可以寫代碼了!
在 PyCharm 中寫代碼
在 PyCharm 中,你可以在項目中執行任意操作。因此,首先你需要創建一個項目。
安裝和打開 PyCharm 后,你會看到歡迎頁面。點擊Create New Project,出現New Project彈窗:
指定項目位置,打開 Project Interpreter 列表,選擇創建新的項目解釋器或者使用已有的解釋器。選擇New environment using,打開其右方的下拉列表,選擇 Virtualenv、Pipenv 或 Conda。這些工具可以為不同項目單獨創建 Python 環境,從而分別保存不同項目所需的依賴項。
你可以選擇其中任意一個,本教程使用的是 Virtualenv。選擇后,指定環境位置,從 Python 解釋器列表中選擇要安裝在系統中的 base interpreter。通常,保持默認設置即可。下面有兩個可選框:在新環境中繼承全局包環境、令當前環境可以用其它所有項目,兩個都不要選。
點擊右下角的Create,創建新項目:
屏幕上出現Tip of the Day彈窗,在每次啟動時 PyCharm 通過該彈窗提供 trick。關掉該彈窗。
現在我們可以開始新的 Python 程序了。如果你使用的是 Mac 系統,使用 Cmd+N 鍵;如果你使用的是 Windows 或 Linux 系統,使用 Alt+Ins 鍵。然后選擇 Python File。你也可以在菜單中選擇 File → New。將新文件命名為 guess_game.py 并點擊 OK。你將看到如下 PyCharm 窗口:
至于測試代碼,我們來快速寫一個簡單的猜謎游戲,即程序選擇一個數字讓用戶來猜,在每一次猜測時,程序將告訴用戶他猜的數字比神秘數字大還是小,用戶猜中數字時游戲結束。以下是該游戲的代碼:
直接鍵入上述代碼,而不是復制粘貼。你會看到如下畫面:
如上圖所示,PyCharm 提供 Intelligent Coding Assistance 功能,可以執行代碼補全、代碼檢查、錯誤高亮顯示和快速修復建議。比如鍵入 main 并點擊 tab 鍵,PyCharm 會自動補全整個 main 從句。
此外,如果你在條件句前忘記鍵入 if,在該句子最后增添.if 并點擊 Tab 鍵,PyCharm 將修復該 if 條件句。該用法同樣適用于 True.while。這即是 PyCharm 的 Postfix Completion 功能,它可以幫助用戶減少退格鍵使用次數。
在 PyCharm 中運行代碼
現在你已經編碼完成該游戲,可以運行了。
該游戲程序有三種運行方式:
使用以上任一方式運行該程序,窗口底部會出現終端面板(Terminal pane),顯示你的代碼輸出結果:
你可以玩一下這個游戲,看看自己能否猜中數字。(專業建議:從 50 開始猜。)
在 PyCharm 中進行代碼 debug
找到神秘數字了嗎?如果找到了,你可能會看到一些奇怪的東西:程序沒有打印出祝賀信息和顯示退出按鈕,而是重新開始了。這就是 bug 所在。要想發現程序重新開始的原因,你需要 debug。
首先,點擊第 8 行代碼左側的空白區域,設置斷點:
斷點即程序運行到這一行時會自動停止,你可以探索斷點處之后的代碼有什么錯誤。接下來,從以下三種方式中選擇一種開始 debug:
之后,你將看到底部出現 Debug 窗口:
按照下列步驟執行程序 debug:
恭喜你,bug 被修復了!
在 PyCharm 中進行代碼測試
不經單元測試的應用都不可靠。PyCharm 可以幫助你快速舒適地寫單元測試并運行。默認情況下,unittest 被用作測試運行器,而 PyCharm 還支持其他測試框架,如 pytest、nose、doctest、tox 和 trial。例如,你可以按照以下步驟為項目選擇 pytest 測試運行器:
本教程的示例將使用默認測試運行器 unittest。
在同一個項目中,創建文件 calculator.py,并將以下 Calculator 類放入該文件:
PyCharm 使得為已有代碼創建測試變得輕而易舉。打開 calculator.py 文件,執行以下步驟中的任意一個:
選擇Create New Test…,得到以下窗口:
Target directory、Test file name 和 Test class name 這三項均保留默認設置。選中上圖中兩種需要測試的方法并點擊 OK。好了!PyCharm 自動創建文件 test_calculator.py,并在其中創建了以下 stub test:
使用以下方法中的任意一個運行測試:
你將看到底部出現測試窗口,所有測試均失敗:
注意,左側是測試結果的層次結構,右側是終端的輸出。現在,將代碼更改成以下代碼,實現 test_add:
重新運行測試,你會看到一個測試通過了,另一個則失敗。按照如下操作探索不同選項,來展示已通過測試和被忽略測試,按照字母順序對測試進行排序,以及按照時長對測試進行排序:
注意,上圖中的 sleep(0.1) 方法的作用是使其中一個測試變慢,以便按時長對測試進行排序。
在 PyCharm 中編輯已有項目
單文件項目非常適合作為示例,但你通常需要處理較大的項目。這部分將介紹如何使用 PyCharm 處理較大項目。
為了探索 PyCharm 以項目為中心的特征,你將使用 Alcazar web 框架(該框架用于學習目的)。
在本地復制該 repo(地址:https://realpython.com/optins/view/alcazar-web-framework/)
當你在本地已有項目時,使用以下方法中的任意一個在 PyCharm 中打開項目:
之后,在計算機中找到包含該項目的文件夾,并打開。
如果該項目包含虛擬環境,PyCharm 將自動使用該虛擬環境,并將它作為項目解釋器。
如果你需要配置不同的虛擬環境 virtualenv,在 Mac 上打開 Preferences,或在 Windows 或 Linux 系統中使用 Ctrl+Alt+S 打開 Settings,找到 Project: ProjectName。打開下拉列表,選擇 Project Interpreter:
從下拉列表中選擇 virtualenv。如果沒有要選擇的項,則點擊下拉列表右方的設置按鈕選擇 Add…。其余步驟和創建新項目的步驟相同。
在 PyCharm 中搜索和導航
在大項目中,我們很難記住每個事物的位置,因此快速導航和搜索非常重要。PyCharm 可以提供這些功能。接下來,我們使用上一節中打開的項目,實踐以下快捷鍵:
導航可使用以下快捷鍵:
更多細節,參見官方文檔:
https://www.jetbrains.com/help/pycharm/tutorial-exploring-navigation-and-search.html
PyCharm 中的版本控制
版本控制系統(如 Git 和 Mercurial)是現代軟件開發世界中最重要的工具之一。因此,IDE 必須支持版本控制。PyCharm 在這方面做得很好,它集成了大量流行的版本控制系統,如 Git(和 Github (https://github.com/))、Mercurial、Perforce 和 Subversion。
注:以下示例中使用的版本控制系統為 Git。
配置版本控制系統(VCS)
要想實現 VCS 集成,你需要在頂部菜單點擊 VCS → VCS Operations Popup…,或者在 Mac 系統中使用 Ctrl+V 鍵,在 Windows 或 Linux 系統中使用 Alt+` 鍵。選擇 Enable Version Control Integration…,你將看到以下窗口:
從下拉列表中選擇 Git,點擊 OK,這樣你就為項目設置好了 VCS。(注意,如果你打開的已有項目已經具備版本控制系統,PyCharm 將會發現并自動使用該版本控制系統。)
這時如果你前往 VCS Operations Popup…,你會發現一個不同的彈窗,它具備選項 git add、git stash、git branch、git commit、git push 等等:
如果你找不到所需要的選項,你可以在頂部菜單中點擊 VCS,選擇 Git,在這里你可以創建和查看 pull request。
提交和沖突處理
這是 PyCharm 中 VCS 集成的兩大特征,我個人經常使用并且非常喜歡。假如你完成了工作,打算提交,前往 VCS → VCS Operations Popup… → Commit…,或者在 Mac 系統中使用 Cmd+K 鍵,在 Windows 或 Linux 系統中使用 Ctrl+K 鍵。你將看到如下窗口:
在該窗口中,你可以:
是不是感覺很神奇很迅速?特別是如果你以前經常通過命令行手動執行這些任務時。
團隊合作中會出現合并沖突(merge conflict)。當一個人對你正在處理的文件提交更改時,你們二人更改了同一行導致更改重疊,這時 VCS 無法決定選擇你的更改還是隊友的更改。那么你可以使用以下箭頭和符號來解決這個問題:
看起來很奇怪,我們很難分辨應該刪除哪些更改、保留哪些更改。不要怕,PyCharm 來了!它可以用更好、更簡潔的方法解決沖突。在頂部菜單中前往 VCS,選擇 Git,然后選擇 Resolve conflicts…。選擇存在沖突的文件,點擊 Merge,出現以下窗口:
在左側列中,你可以查看自己做的更改。在右側列中,可以查看隊友做的更改。而中間列則顯示結果。存在沖突的代碼行被高亮顯示,你可以在它們旁邊看到 X 和 >>/<<。點擊箭頭表示接受更改,點擊 X 則表示拒絕更改。解決所有沖突后,點擊 Apply 按鈕:
在上圖中,對于第一個沖突行,作者選擇拒絕自己的更改,接受隊友的更改。而在第二個沖突行中,作者接受了自己的更改,拒絕了隊友的更改。
使用 PyCharm 中的 VCS 集成還可以執行很多操作。詳情參見
https://www.jetbrains.com/help/pycharm/version-control-integration.html
在 PyCharm 中使用插件和外部工具
在 PyCharm 中你可以找到開發所需的幾乎所有功能。如果沒找到,那么很可能存在一個插件,向 PyCharm 提供你需要的功能。例如,它們可以:
例如,IdeaVim 插件向 PyCharm 添加 Vim 模擬。如果你喜歡 Vim,這個插件可以實現不錯的結合。
Material Theme UI 插件可將 PyCharm 的外觀改變為 Material Design 的外觀:
Vue.js 插件使 PyCharm 支持 Vue.js 項目。Markdown 插件使得在 IDE 內可以編輯 Markdown 文件,并實時預覽渲染后的 HTML。
在 Mac 系統上點擊 Preferences → Plugins,在 Windows 或 Linux 系統中點擊 Settings → Plugins,你可以在 Marketplace 標簽下找到和安裝所有可用插件:
如果仍然沒找到所需插件,你甚至可以自己開發一個。
如果你找不到合適的插件,又不想自己開發,因為 PyPI 上有可用的包,你可以將這個包作為外部工具添加到 PyCharm。以代碼分析器 Flake8 為例。
首先,在所選 Terminal app 中鍵入 pip install flake8,從而在虛擬環境中安裝 Flake8。或者也可以使用 PyCharm 集成的 Terminal:
在 Mac 系統上點擊 Preferences → Tools,在 Windows 或 Linux 系統中點擊 Settings → Tools,選擇 External Tools。然后點擊底部 (1) 處的 + 按鈕。在彈出的窗口中,輸入細節并在兩個窗口中點擊 OK,如下圖所示:
上圖中,Program (2) 指 Flake8,你可以在虛擬環境文件夾(bin)中找到它。Arguments (3) 表示你想用 Flake8 分析的文件。Working directory 表示項目目錄。
你可以把這里所有項的絕對路徑寫死,但這就意味著你無法在其他項目中使用該外部工具,只能在一個項目中針對一個文件使用該工具。
因此你需要使用 Macros。它是$name$格式的變量,根據語境而變化。例如,當你編輯 first.py 時,$FileName$ 為 first.py,當你編輯 second.py 時,$FileName$ 為 second.py。你可以查看它們的列表,點擊 Insert Macro… 按鈕將其中一個插入。此處你使用了 macros,它們的值會根據你目前處理的項目而改變,Flake8 將繼續準確執行其工作。
要想使用它,你需要創建文件 example.py,并在其中寫入以下代碼:
上述代碼故意破壞了 Flake8 的一些規則。右鍵單擊文件背景,選擇 External Tools → Flake8。Flake8 分析結果將出現在窗口底部:
為了使效果更好,你可以為其添加快捷鍵。在 Mac 系統中選擇 Preferences,在 Windows 或 Linux 系統中選擇 Settings。然后,點擊 Keymap → External Tools → External Tools。雙擊 Flake8,選擇 Add Keyboard Shortcut,出現以下窗口:
上圖中,快捷鍵是 Ctrl+Alt+A(本教程使用該快捷鍵)。你可以在文本框中添加喜歡的快捷鍵,然后在兩個窗口中點擊 OK。然后,你就可以用該快捷鍵,在 Flake8 的幫助下分析目前在處理的文件了。
PyCharm Professional 功能
PyCharm Professional 是 PyCharm 的付費版本,具備更多開箱即用的功能和集成。這部分將概覽其主要功能,以及官方文檔鏈接(其中詳細介紹了每一項功能)。記住,以下功能在 PyCharm Community 版本中均不可用。
Django 支持
Django 是最流行和最受喜愛的 Python web 框架,PyCharm 對 Django 提供廣泛的支持。要確保對 Django 的支持,需要執行以下步驟:
現在確保了對 Django 的支持,你在 PyCharm 中的 Django 開發之旅將輕松很多。具體而言在創建項目時,你會得到一個專用的 Django 項目類型。這表示,當你選擇該類型時,你將擁有所有必要文件和設置。這等同于使用 django-admin startproject mysite。
你也可以在 PyCharm 內直接運行 manage.py 命令。目前支持的 Django 模板,包括以下一些:
除此之外,我們還可以在其他 Django 部分(如視圖、URL 和模型)中執行代碼補全、對 Django ORM 提供代碼追蹤支持(code insight support)、對 Django 模型提供模型依賴項關系圖。
更多細節,參見官方文檔:
https://www.jetbrains.com/help/pycharm/django-support7.html
數據庫支持
現代數據庫開發是一個復雜的任務,需要多個支持系統和工作流。這也是 JetBrains 開發獨立 IDE DataGrip 的原因。DataGrip 是獨立于 PyCharm 的產品,二者的應用場景和授權都不相同。
但幸運的是,通過 Database tools and SQL 插件(該插件默認開啟),PyCharm 可以支持 DataGrip 中的所有特性。在該插件的幫助下,你可以查詢、創建和管理數據庫,不管數據庫在本地、服務器,還是在云端。該插件支持 MySQL、PostgreSQL、Microsoft SQL Server、SQLite、MariaDB、Oracle、Apache Cassandra 等。
關于該插件的更多用途,請查看文檔:
https://www.jetbrains.com/help/pycharm/relational-databases.html
線程并發可視化(Thread Concurrency Visualization)
Django Channels、asyncio 和近期框架(如 Starlette (https://www.starlette.io/))表明異步 Python 編程正逐漸成為趨勢。異步編程具備很多好處,但很難寫,也很難 debug。在此類案例中,Thread Concurrency Visualization 就是醫生,幫助你全面管理多線程應用并進行優化。
更多細節,參見文檔:
https://www.jetbrains.com/help/pycharm/thread-concurrency-visualization.html
Profiler
說到優化,profiling 是另一種代碼優化方法。profiling 可以幫助你查看代碼的哪一部分占用了最多的執行時間。profiler 運行的優先級如下:
1. vmprof
2. yappi
3. cProfile
如果你沒有安裝 vmprof 或 yappi,則運行標準 cProfile。更多細節,參見:
https://www.jetbrains.com/help/pycharm/profiler.html
科學模式
Python 不僅是通用和 web 編程語言,由于 NumPy、SciPy、scikit-learn、Matplotlib、Jupyter 等庫和工具的加持,Python 成為數據科學和機器學習領域的最優工具。有了這些強大工具,你還需要一個強大的 IDE 來支持這些庫所具備的繪圖、分析等所有功能。
關于科學模式的更多詳情,參見
https://www.jetbrains.com/help/pycharm/matplotlib-support.html
遠程開發
很多應用出現 bug 的一個常見原因是,開發環境和生產環境不同。盡管在大多數情況下,開發時完美復制生產環境并不現實,但力求實現完美復刻是值得追尋的目標。
在 PyCharm 的幫助下,你可以使用另一臺計算機(如 Linux VM)上的解釋器對應用進行 debug。這樣,你就可以擁有與生產環境一樣的解釋器了,從而避免很多因開發環境和生產環境差異導致的 bug。
詳情參見:
https://www.jetbrains.com/help/pycharm/remote-debugging-with-product.html
結論
PyCharm 是最好的 Python 開發 IDE 之一。它提供大量優勢,幫助執行例行任務,從而節約大量時間。學完本教程,現在你知道如何利用 PyCharm 提高生產效率了嗎?
原文地址:https://realpython.com/pycharm-guide/
編輯:王菁
校對:林亦霖
— 完 —
關注清華-青島數據科學研究院官方微信公眾平臺“THU數據派”及姊妹號“數據派THU”獲取更多講座福利及優質內容。
猜謎謠》
*請認真填寫需求信息,我們會在24小時內與您取得聯系。