用 VSCode 編寫 python


一、coding


1、選擇一個Python解釋器

通過命令選項板(⇧⌘P),鍵入Python:Select Interpreter命令,然后選擇一個解釋器。

成功后左下角出現:

2、運行代碼

二、重構


1、提取變量 / 方法

2、整理和排序 imports

三、formatting & linter


為什么要把 formatting 和 linter 放在一起說,兩個其實是不同的東西(雖然通常一起協作)。因為市面上的工具有的是單獨的,有時候是兩者兼有,網上也沒有一篇真正梳理的比較好的文章。我也就懶得分了,姑且直接以 集成進 vscode 為使用場景來分別介紹這兩種。

1、formatting - 支持

vscode 支持 autopep8(默認),blackyapf

(1)指定
"python.formatting.provider": "autopep8"

默認的 autopep8 無需安裝,但是如果要用 black 或 yapf,則需要 pip install 它們。

(2)配置
# 形如 "python.formatting.[name]Args": ["--line-length", "100"],譬如:

"python.formatting.blackArgs": ["--line-length", "100"]

2、formatting - 推薦 black

(1)理由

在之前,我寫過一篇 《VSCode 使用 ESLint + Prettier 來統一 JS 代碼》,本來想讓 python 跟 javascript 保持統一都用 Prettier,但很可惜 Prettier 不支持 python,但是 Prettier 官方推薦了用 Black

(2)介紹

Black是facebook提供的一個python formatter工具。

black 號稱不妥協,為什么呢?因為它檢測到不符合規范的代碼風格直接就幫你全部格式化好,根本不需要你確定,直接替你做好決定。且最大程度地保證格式化的最終結果一致。

black 的名字來源於當年福特的一句話:

Any customer can have a car painted any color that he wants so long as it is black.

Black 是 PEP8 的嚴格子集。

拓展:什么是 PEP8 ?

為了幫助開發者統一代碼風格,Python 社區提出了 PEP8 代碼編碼風格。

Python 官方同時推出了一個檢查代碼風格是否符合 PEP8 的工具,名字也叫 pep8,后來被重命名為了 pycodestyle

(3)地址

官網:https://black.readthedocs.io/en/stable

在線體驗:https://black.now.sh/?version=stable

(4)使用

參考上文 “formatting - 支持”

Black 依賴於 Python 3.6+,但通過其他辦法也可以格式化用 Python 2 編寫的代碼。

配置就用默認配置。

(5)CLI 使用
# 對文件
$ black my_file.py

# 對目錄
$ black my_package/
(6)用在 持續集成

待寫

(7)用在 Git pre-commit hook

待寫

3、linter - 支持

pylint默認的外,vscode 還支持flake8mypypydocstylePep8 (pycodestyle) prospectorpylamabandit

(1)指定
# 形如 "python.linting.[name]Enabled": true,譬如:

"python.linting.flake8Enabled": true

默認的 autopep8 無需安裝,但是如果要用 black 或 yapf,則需要 pip install 它們。

(2)配置
# 形如 "python.linting.[name]Args": true,譬如:

"python.linting.flake8Args": ["--ignore=E501,E722,W503"]

4、linter - 推薦 flake8

(1)理由

google 了一圈發現沒有啥好文章分析到底哪個 python linter 好,姑且以此帖 大家在自己的 Python 項目中傾向使用哪個 Linter? 為參考,暫且選定 flake8

(2)介紹

Flake8 是由 Python 官方發布的一款輔助檢測 Python 代碼是否規范的工具,相對於目前熱度比較高的 Pylint 來說,Flake8 檢查規則靈活,支持集成額外插件,擴展性強。

Flake8 是對下面三個工具的封裝:

  • PyFlakes:靜態檢查 Python 代碼邏輯錯誤的工具。

  • Pep8: 靜態檢查 PEP8 編碼風格的工具。

  • NedBatchelder’s McCabe :靜態分析 Python 代碼復雜度的工具。

不光對以上三個工具的封裝,Flake8還提供了擴展的開發接口。

(3)地址

官方文檔:https://pypi.python.org/pypi/flake8/

(4)使用

參考上文 “linter - 支持”

參考資料

Linting Python in Visual Studio Code

使用vscode開發Python程序:代碼靜態檢查工具pylint及代碼格式化工具yapf的配置使用

四、整合 jupyter


備注:jupyter 與 vscode 整合的並不好,最致命的問題是:

比如有 A、B、C 三個 cell,依次執行。Python Interactive 里正常顯示了執行結果:A result > B result > C result

現在我修改了 B cell 的代碼,重新執行 B cell ,執行結果:A result > B result > C result > B result

但是這不是我想要的,我想要的結果是 :A result > B result (new) > C result , 即替換原有的結果。

關於這個問題,我提交到了官方的 github issue :https://github.com/Microsoft/vscode/issues/67546,目前暫不考慮在 VSCode 里使用 jupyter

1、導入

導入jupyter ,會從 .ipynb轉成 .py文件。

2、編寫 cell

(1)普通 cell

#%%

(2)markdown cell

#%% [markdown]

注意,要用注釋的方式寫 markdown cell

正確
# # eric do something
# *哈哈哈哈*

錯誤
# eric do something
*哈哈哈哈*

3、導出

五、單元測試


六、使用docker容器進行部署



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM