经过命令选项板(⇧⌘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 *哈哈哈哈*
略
略