經過命令選項板(⇧⌘P)
,鍵入Python:Select Interpreter
命令,而後選擇一個解釋器。javascript
成功後左下角出現:html
爲何要把 formatting 和 linter 放在一塊兒說,兩個實際上是不一樣的東西(雖然一般一塊兒協做)。由於市面上的工具備的是單獨的,有時候是二者兼有,網上也沒有一篇真正梳理的比較好的文章。我也就懶得分了,姑且直接以 集成進 vscode 爲使用場景來分別介紹這兩種。java
vscode 支持 autopep8
(默認),black
或 yapf
。python
"python.formatting.provider": "autopep8"
默認的 autopep8 無需安裝,可是若是要用 black 或 yapf,則須要 pip install 它們。git
# 形如 "python.formatting.[name]Args": ["--line-length", "100"],譬如: "python.formatting.blackArgs": ["--line-length", "100"]
在以前,我寫過一篇 《VSCode 使用 ESLint + Prettier 來統一 JS 代碼》,原本想讓 python 跟 javascript 保持統一都用 Prettier,但很惋惜 Prettier 不支持 python,可是 Prettier 官方推薦了用 Black
。github
Black是facebook
提供的一個python formatter工具。docker
black 號稱不妥協,爲何呢?由於它檢測到不符合規範的代碼風格直接就幫你所有格式化好,根本不須要你肯定,直接替你作好決定。且最大程度地保證格式化的最終結果一致。markdown
black 的名字來源於當年福特的一句話:ide
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
。
官網:https://black.readthedocs.io/en/stable
在線體驗:https://black.now.sh/?version=stable
參考上文 「formatting - 支持」
Black 依賴於 Python 3.6+,但經過其餘辦法也能夠格式化用 Python 2 編寫的代碼。
配置就用默認配置。
# 對文件 $ black my_file.py # 對目錄 $ black my_package/
待寫
待寫
除pylint
是默認的外,vscode 還支持flake8
、mypy
、pydocstyle
、Pep8 (pycodestyle)
、prospector
、pylama
、bandit
。
# 形如 "python.linting.[name]Enabled": true,譬如: "python.linting.flake8Enabled": true
默認的 autopep8 無需安裝,可是若是要用 black 或 yapf,則須要 pip install 它們。
# 形如 "python.linting.[name]Args": true,譬如: "python.linting.flake8Args": ["--ignore=E501,E722,W503"]
google 了一圈發現沒有啥好文章分析到底哪一個 python linter 好,姑且以此帖 你們在本身的 Python 項目中傾向使用哪一個 Linter? 爲參考,暫且選定 flake8
。
Flake8 是由 Python 官方發佈的一款輔助檢測 Python 代碼是否規範的工具,相對於目前熱度比較高的 Pylint 來講,Flake8 檢查規則靈活,支持集成額外插件,擴展性強。
Flake8 是對下面三個工具的封裝:
PyFlakes:靜態檢查 Python 代碼邏輯錯誤的工具。
Pep8: 靜態檢查 PEP8 編碼風格的工具。
NedBatchelder’s McCabe :靜態分析 Python 代碼複雜度的工具。
不光對以上三個工具的封裝,Flake8還提供了擴展的開發接口。
官方文檔:https://pypi.python.org/pypi/flake8/
參考上文 「linter - 支持」
Linting Python in Visual Studio Code
使用vscode開發Python程序:代碼靜態檢查工具pylint及代碼格式化工具yapf的配置使用
備註: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。
導入jupyter ,會從 .ipynb
轉成 .py
文件。
(1)普通 cell
#%%
(2)markdown cell
#%% [markdown]
注意,要用註釋的方式寫 markdown cell 正確 # # eric do something # *哈哈哈哈* 錯誤 # eric do something *哈哈哈哈*
略
略