用 VSCode 编写 python
一、coding
1、选择一个Python解释器
通过命令选项板(⇧⌘P)
,键入Python:Select Interpreter
命令,然后选择一个解释器。
成功后左下角出现:
2、运行代码
二、重构
1、提取变量 / 方法
2、整理和排序 imports
三、formatting & linter
为什么要把 formatting 和 linter 放在一起说,两个其实是不同的东西(虽然通常一起协作)。因为市面上的工具有的是单独的,有时候是两者兼有,网上也没有一篇真正梳理的比较好的文章。我也就懒得分了,姑且直接以 集成进 vscode 为使用场景来分别介绍这两种。
1、formatting - 支持
vscode 支持 autopep8
(默认),black
或 yapf
。
(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 还支持flake8
、mypy
、pydocstyle
、Pep8 (pycodestyle)
、prospector
、pylama
、bandit
。
(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容器进行部署
略
用 VSCode 编写 python的更多相关文章
- vscode 编写python如何禁止 flake8 提示 line too long
使用vscode编写python还是挺舒服的,但是如果给vscode安装了语法校验插件,例如flake8,会常常提示一些非常苛刻的语法问题,其中最让人不能忍受的就是line to long. 一行仅能 ...
- vscode编写python,引用本地py文件出现红色波浪线
前言 引用本地py文件出现红色波浪线,如下图: 原因 经过查询得知,vscode中的python插件默认使用的是pylint来做代码检查,因此需要对pylint做一些配置 解决方案 在setting. ...
- vscode 编写Python走过的坑
1,在使用vscode 中import turtle 这个模块, 再调用t = turtle.Pen(),始终提示无法找到turtle模块 2.可是使用terminal 中调用turtle模块,没有问 ...
- vscode配置python之settings.json 智能提示
vscode编写Python的智能提示,搞了好久,参考了各种网上配置,如下,备份方便自己查找. { "workbench.iconTheme": "material-ic ...
- windows下使用vscode编写运行以及调试Python
更新于2018年10月: 首先去python官网下载python3 地址:https://www.python.org/downloads/windows/ 下载好后直接安装 记得勾选添加环境变量 ...
- VsCode中编写python环境配置
1. VsCode中编写python环境配置 1.1. 前言 有过开发经验都知道idea一系列的软件虽然功能比较多,但比较容易卡,电脑不好还真容易上火,这里我想要入门python,还是选了款vscod ...
- VSCode的Python扩展下程序运行的几种方式与环境变量管理
在VSCode中编写Python程序时,由于有些地方要使用环境变量,但是发现设置的环境变量有时不起作用,花了点时间研究了一下,过程不表,直接说结论. 首先,环境变量的设置,Python扩展中有三种方式 ...
- 在ubuntu下使用visual studio code编写python
感觉有了visual studio code之后,不管编写什么语言的代码都可以,简单安装对应的语言插件即可. 这不轮到了最近比较热的python语言,蹭着AI的热度,python语言成为了工程师们又一 ...
- vscode编写插件
vscode编写插件详细过程 前言 之前编写了一个vscode插件用vscode写博客和发布,然后有园友要求写一篇来介绍如何开发一个vscode扩展插件,或者说介绍开发这个插件的过程.然而文章还没有写 ...
随机推荐
- Django ORM 常用字段和参数
Django ORM 常用字段和参数 一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. I ...
- function 函数
function:函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回.因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑. 如果没有return语句,函数执行完毕后也 ...
- 【mysql】:mysql性能优化总结
一.Mysql引擎概述 1.MyISAM存储引擎 MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器:每当我们建立一个MyISAM引擎的表时,就会在本地 ...
- ArrayList增加扩容问题 源码分析
public class ArrayList<E>{ private static final int DEFAULT_CAPACITY = 10;//默认的容量是10 private s ...
- 【Python】【BugList12】python自带IDLE执行print(req.text)报错:UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 93204-93204
[代码] # -*- coding:UTF-8 -*- import requests if __name__ == '__main__': target = 'https://unsplash.co ...
- P3398 仓鼠找sugar (一道LCA的裸题)
https://www.luogu.org/problemnew/show/P3398 题意简单概括一下就是求树上两条路径是否相交; 有这样一个性质: if相交,则必有lca(a,b) 在路径c &l ...
- 如何方便的在windows测试python程序
听说python的网页抓取模块很强大,我想试试看看能给我的网络优化工作带来什么大的帮助,于是跟随廖雪峰老师开始学习python(地址查看),因为我用的是window系统,这就给程序的测试带来了很多麻烦 ...
- HTML标签有序标签和无序标签
1.<ul>标签定义无序列表,所谓无序,是指以●.○.▽.▲等开头的,没有顺序的列表项目 1.1 设置无序列表的类型—type 无序列表的默认符号是圆点(● ). ...
- LSTM(Long Short Term Memory)
长时依赖是这样的一个问题,当预测点与依赖的相关信息距离比较远的时候,就难以学到该相关信息.例如在句子”我出生在法国,……,我会说法语“中,若要预测末尾”法语“,我们需要用到上下文”法国“.理论上,递归 ...
- vuex的mutations传值
mutations是要通过方法触发的,用于更改store里的数据的.this.$store.commit("mutationsName") 例子: store.js import ...