日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

最新PyCharm基本使用(3)------编码(Code)、重构(Refactor)

發布時間:2024/1/8 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 最新PyCharm基本使用(3)------编码(Code)、重构(Refactor) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄
六、PyCharm中代碼的填充、補充、檢查、分析、清理等操作
七、PyCharm中的重命名、更改簽名、提取、引入、內聯(復原)、安全刪除、調整、轉換等重構操作

六、PyCharm中代碼的填充、補充、檢查、分析、清理等操作

Code(編碼)菜單

? ? ? ? PyCharm的Code菜單的選項如圖6-1所示,是PyCharm中代碼自動填充、補充、檢查、分析、清理、展開、折疊、格式規范、縮進、優化導入、移動等編碼操作,菜單中有代碼操作選項及其快捷鍵。PyCharm根據上下文感知,能自動填充、補充、檢查、分析等,提高我們編程速度,且提高代碼質量。

圖6-1? PyCharm的Code菜單

Override Methods

? ? ? ?重寫方法。鼠標放在類中的任何位置,選擇該項后,重寫(重載)父類的方法,父類的方法在子類中生成,然后在生成的方法中,我們可以寫入代碼。

Implement Methods

? ? ? ?實現方法。選擇該項能填充方法的內容,使得實現方法的功能。

Generate

? ? ?生成。該選項根據光標位置對應彈出菜單,菜單集合了Override Methods、Implement Methods、Test、或Copyright等選項。

Code Completion

? ? ? ?代碼完成。選擇該選項彈出的菜單中的選項,能自動補充代碼相關的內容,加快我們寫代碼的速度。比如:菜單中Basic可以幫我們填入有關類、方法和關鍵字的名稱。

Inspect Code

? ? ? ?檢查代碼。根據指定的檢查范圍進行檢查,并顯示該范圍內代碼存在的問題。檢查代碼是依據File→Settings→ Editor → Inspections中提供的相關策略進行檢查。

Code Cleanup

? ? ? ?代碼清理。該選項是根據指定的范圍,在該范圍中找到可能有問題的代碼片段并立即自動修復它們。

Analyze Code

? ? ? 分析代碼。選擇該選項的菜單中的選項,可以完成特定代碼分析,比如:Run Inspection by Name,可以根據名稱指定一個檢查(名詞,一般是一個文件),并用這個檢查(名詞)來檢查(動詞)我們指定范圍內的代碼,也即選擇該選項后,在彈出窗口先確定一個檢查(名詞),確定后再在新窗口中指定范圍,然后確定后就可以進行代碼審查。

Analyze Stack Trace or Thread Dump

? ? ? ?分析堆棧跟蹤或線程轉儲。像死鎖(Deadlock)、死機等異常,這些異常沒有幫助您導航到源代碼中相應位置的鏈接,使用PyCharm,我們可以復制異常產生的堆棧軌跡,或復制完整的線程轉儲,將其粘貼到選擇該選項彈出的Stack trace Analyzer窗口,確定后可以導航到相應的源代碼。 ??

? ? ? ?Stack Trace(堆棧跟蹤,堆棧軌跡),異常發生時會產生一個堆棧軌跡。其中,棧(stack),又名堆棧,是一種只能在一端(棧頂)進行插入和刪除操作的特殊線性表(在內存中為動態內存區域),棧一般存放函數的地址、對象的引用地址等,堆棧追蹤(堆棧軌跡,stack trace)是對程序運行過程的活動記錄的描述。

? ? ? Thread Dump(線程轉儲) 包含的內容:線程,線程運行狀態、標識和調用的堆棧,堆棧包含完整的類名及所執行的方法,源代碼的行數等。線程(英語:thread)是操作系統能夠進行運算調度的最小單位。它被包含在進程之中,是進程中的實際運作單位。一條線程指的是進程中一個單一順序的控制流,一個進程中可以并發多個線程,多個線程并行可以執行不同的任務。

? ? ? ?死鎖是指兩個或兩個以上的進程在執行過程中,由于競爭資源或者由于彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。

Insert Live Template

? ? ? ?插入活動模版。選擇該選項可在光標位置根據活動模板創建代碼構造(比如:某個固定的代碼語句)。選擇該選項會彈出菜單,菜單中是已經存在的Live Template(活動模版),選擇某個模板,光標位置會自動生成這個模板代表的內容。

? ? ? 該選項會彈出菜單中的模版一般是默認自帶模版,我們也可以在File→Settings→ Editor → Live Template中可以根據自己的需要來創建模版,比如:在File→Settings→ Editor → Live Template彈出的窗口選中Python模版組(模板群),點擊該窗口右側加號(+),里面有Live Template和Template Group(創建模版組,模版組名稱下面可以放多個模版)兩個選項,選擇Live Template,窗口下面輸入Abbreviation(模版的縮寫,也即模版名稱),Description(模版的描述),Template text(模版文本,也即模版內容),確定后即可自定義創建一個Python的新模版。

? ? ? ?注意,這里的Live Template選項與File→Save File as Template是不同的概念。

Save as Live Template

? ? ? ?另存為活動模版。先選擇代碼的某個內容,然后選擇該選項能創建一個Live Template(活動模版),實際也是默認在File→Settings→ Editor → Live Template中user模板組下創建模版。

Surround With

? ? ? ?環繞,能創造代碼構造。光標放在某行代碼,選擇該選項彈出菜單的選項,可以在該行代碼周圍生成對應的代碼語句,比如:if語句、while語句、注釋等。該選項彈出菜單中的選項是Pycharm根據該行代碼上下文來確定的,當該行代碼不能產生環繞時,提示Couldn't find Surround With variants applicable to the current context(找不到適用于當前上下文的環繞變體)。

Unwrap/Remove

? ? ? ?展開或移除,從封閉語句中快速展開或提取表達式。比如:光標放在if體內某個位置,選擇該項后,會自動選中上下同一層次的代碼語句,并彈出確定Unwrap/Remove的提示窗口(窗口的選項會根據被選中語句的上下文生成),確定后會自動提取出這些被選擇的語句,并去掉了if條件。該選項操作比較適合if、while、for等控制結構的語句。

Folding

? ? ? ?折疊。光標放在某個位置或選中某個區域,選擇該選項的菜單中的選項,可以展開和折疊對應的代碼。比如:選擇菜單中的Collapse,會折疊隱藏相關代碼,選擇菜單中的Expand,或展開相關代碼。

Comment with Line Comment

? ? ? ? 行注釋,選擇該選項后,光標所在行的開頭會自動增加注釋符號,該行成為注釋行。

Comment with Block Comment

? ? ? ? 塊注釋,多行注釋,這些多行變為注釋行。

Reformat Code

? ? ? ?重新格式化代碼(代碼格式規范),自動調整、對齊、規范代碼,使得代碼空格間隔更規范,增強可讀性。

Reformat File

? ? ? ?可以對整個文件的代碼進行格式化。能對整個文件的代碼進行自動調整、對齊、規范、清理等等,使得整個文件代碼空格間隔更規范,增強可讀性。該選項的菜單中還可以進行格式化的一些選項設置,比如:勾選該選項的菜單中Optimize Imports,可以去掉未使用的import語句,這里的Optimize Imports與下面即將講到的Optimize Imports選項的效果一樣。

Auto-Indent Lines

? ? ? ?自動縮進。選擇該項,光標所在的行或選中的代碼會根據上下文向左或向右自動縮進。

Optimize Imports

? ? ? ?優化導入。可以去掉文件中未使用、或重復的導入,而且還可以組織(規劃)導入語句。

Rearrange Code

? ? ? ?重排代碼,可根據排列規則重新排列代碼。Python不支持此操作。

Move Statement Down

? ? ? ?向下移動語句。鼠標所在位置對應的行或代碼塊會向下移動。比如:在類里面,光標在定義的方法名的位置,選擇該項后,該方法整體下移,與類中下面的方法交換位置。

Move Statement Up

? ? ? ?向上移動語句,與上面Move Statement Down相反。

Move Element Left,Move Element Right

? ? ? ?向左移動光標位置的元素,向右移動光標位置的元素。

Move Line Down,Move Line Up

? ? ? ?向下移動一行,向上移動一行,類似Move Statement Down,Move Statement Up,但只能移動一行。

Update Copyright

? ? ? ?更新版權。

七、PyCharm中的重命名、更改簽名、提取、引入、內聯(復原)、安全刪除、調整、轉換等重構操作

Refactor(重構)菜單

? ? ? ?PyCharm的Refactor菜單的選項如圖7-1所示,Refactor菜單的選項由當前上下文決定的,是PyCharm中重命名、更改簽名、提取、引入、內聯、安全刪除、調整、轉換等重構操作,菜單中有重構操作選項及其快捷鍵。重構,重新改變、改進。代碼重構一般是在不創建新功能的情況下改進源代碼,重構有助于保持代碼的穩固和易于維護。

?圖7-1? PyCharm的Refactor菜單

Refactor This

? ? ? ?重構,重新改變、改進。代碼重構是在不創建新功能的情況下改進源代碼,重構有助于保持代碼的穩固和易于維護。光標選擇(或懸停在)要重構的符號或代碼片段,選擇該選項,彈出重構菜單的選項(菜單選項由光標所在位置的上下文決定),比如:對類或方法重命名(Rename,用法同下面講到的Rename一樣)、Change Signature(更改簽名,用法同下)、引入變量(Introduce Variable)、引入常數(Introduce Constant)等。若不能重構,會提示Cannot perform refactoring using the selected element(無法使用所選元素(選項)執行重構)。

? ? ? ? 該選項彈出菜單中的選項很多也是下面即將講到的選項。

Rename

? ? ? ?對變量、函數、類、或方法等重命名,選擇該選項彈出修改光標所在位置名稱的窗口,有的注意選擇修改范圍(Scope),比如:修改類名時可以針對整個項目,也可以選擇針對當前文件。

Change Signature

? ? ? ?更改簽名,可以更改項目當前目錄下文件中的函數名或方法名,或添加、刪除、重新排序、重命名其參數,并且這個目錄下所有文件中相同調用(包括繼承)層次的也發生同樣的改變,比如:項目當前目錄中文件中的類AA中方法func,選擇Change Signature,在彈出的菜單中改func方法名,當前文件中func方法會改名,而且在項目當前目錄中所有文件,只要是有AA.func或繼承調用中的func也都會改名。

? ? ? ?因此,該選項比較特殊,通過該選項時,要注意對其它文件的影響,該選項設置重構時,可以先進行Preview(預覽),查看將對其它文件的改變。

Extract/Introduce

? ? ? ?提取(摘錄)或引入,該選項根據光標的操作及上下文來確定提取(摘錄)或引入。若光標未選中或選中某個名稱,默認引入,若光標選中某個表達式,則是提取,比如:用光標選中某個表達式,再選擇該選項彈出菜單中的Variable選項,則把這個表達式賦給一個新變量,且用這個新變量來引用(表示)這個表達式。若不能提取(摘錄)或引入,會提示Cannot perform refactoring using the selected element(無法使用所選元素(選項)執行重構)。

? ? ? ?該選項彈出的菜單中主要有Variable(變量)、Constant(常量)、Field(字段,提供給計算機識別,類似變量這種指代作用,常用在數據庫中)、Parameter(參數,比如:函數的參數)、Method(方法)、Superclass(超類,父類)等選項。

Inline

? ? ? 內聯,復原。內聯重構,相當于上面Extract的逆操作,是方法或變量的提取(Extract)的逆操作。比如:鼠標放在變量或選中變量,然后選中該選項即可還原提取,也即恢復到提取前原來的表達。對方法進行內聯重構,彈出的菜單中有Inline all invocations and remove the declaration 和Inline all invocations and keep the declaration兩個選項,前者是內聯所有調用并刪除聲明(定義的這個方法),后者是內聯所有調用并保留聲明(定義的這個方法)。

Move File

? ? ? ? 移動當前文件到某個文件夾。

Copy File

? ? ? ? ?復制當前文件到某個文件夾。

Safe Delete

? ? ? ?安全刪除。安全刪除重構可以安全地刪除文件。在PyCharm窗口左側的Project項目展示欄中選中文件,然后選擇該選項,提示是否安全刪除該文件,該操作在刪除時會檢查是否存在外部使用,若存在引用,將打開“檢測到的使用情況”方對話框。

Pull Members Up

? ? ? ?向上拉成員,該重構可以將類中的成員移動到超類(父類)。移動變量需要光標選中定義的變量,移動方法只需光標放到定義的方法的位置。

Pull Members Down

? ? ? ? ?下拉成員,該重構與Pull Members Up相反,可以將父類中的成員移動到子類。

Invert Boolean

? ? ? ?反轉布爾值,該重構可以將布爾變量的值及其所有用法從True轉換為False,反之亦然。光標放在變量位置,選擇該選項即可實現。比如:原來:

def func():c1 = Truereturn c1

選該選項操作后:

def func():c1 = Falsereturn not c1

Convert to Python Package

? ? ? ? 把模塊(module)轉換為包(也可以叫著庫),在PyCharm窗口左側的Project項目展示欄中選中模塊(比如:.py文件),選擇該選項即可生成包。

Convert to Python Module

? ? ? ?把包轉換為模塊(module),是Convert to Python Package的逆操作,在PyCharm窗口左側的Project項目展示欄中選中包,選擇該選項即可生成模塊。

最后,歡迎你點贊、收藏、關注!

總結

以上是生活随笔為你收集整理的最新PyCharm基本使用(3)------编码(Code)、重构(Refactor)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。