五步掌握用VSCode进行高效Python开发( 二 )


工作区设置以json格式保存在项目目录下.vscode文件夹中 。
写个Python程序
让我们从一个Python程序开始探索如何在VSCode中进行Python开发 。你可以在VSCode中使用快捷键Ctrl+N来编辑一个新文件(也可以在菜单栏中选择File—New File) 。
Tips:VSCode用户界面提供了命令盘(command palette)功能,使你可以手不离键盘就能搜索、执行各项命令 。按下Ctrl+Shift+P打开命令盘,键入new file,按下回车,也可以编辑一个新文件 。
无论用哪种方法,你应该可以看到类似下面这样的窗口:

五步掌握用VSCode进行高效Python开发

文章插图
 
新文件打开后,就可以开始写代码啦 。
我们快速写一个埃拉托斯特尼筛法(用来寻找不超过一个数的所有质数)作为测试代码 。从下面这两行开始:
sieve = [True] * 101for i in range(2, 100):你应该看到类似下面的场景:
五步掌握用VSCode进行高效Python开发

文章插图
 
等等,发生什么了?为什么VSCode没有任何关键词高亮,格式自动调整等有用的东西?要它何用?
答案是,目前VSCode还不知道你在写什么 。这个文字缓冲区叫做Untitled-1,如果你看看窗口右下角,你会发现写着Plain Text,也就是说VSCode还不知道你在写Python代码 。
为了让Python插件发挥作用,我们需要将文件存储为后缀为py的文件,如sieve.py 。你可以通过菜单栏File—Save File,或者按下Ctrl+S,或在命令盘键入save file来做到这一点 。VSCode看到py后缀就会将文件解释为Python代码 。现在你的窗口应该长这样:
五步掌握用VSCode进行高效Python开发

文章插图
 
好多了有没有!VSCode自动按照Python语言重新确定了格式,你可以在窗口左下角验证当前编程语言的正确性 。
如果你同时安装了多个版本的Python(如Python2.7,Python3.x和Anaconda),你可以通过点击左下角的语言(这里的Python x.x.x)或在命令盘中选择select interpreter来切换Python解释器 。VSCode默认用PEP8标准来格式化Python代码,但你也可以选用其他标准 。
现在让我们完成剩余筛法代码 。
为了能观察到IntelliSense发挥作用,请不要直接复制粘贴这段代码 。亲手输入,你将看到下面的画面:
五步掌握用VSCode进行高效Python开发

文章插图
 
下面是埃拉托斯特尼筛法中“筛”这个部分的完整代码:
sieve = [True] * 101for i in range(2, 100): if sieve[i]: print(i) for j in range(i*i, 100, i): sieve[j] = False输入这段代码时,VSCode自动缩进了for和if下的语句,自动加上了结尾大括号,并为你提供输入建议 。这就是IntelliSense的威力 。
运行Python代码
既然写完了代码,我们就可以运行它了 。因为VSCode可以直接在编辑器里运行代码,所以我们完全不需要离开编辑器 。按Ctrl+S保存文件,接着在编辑器窗口中点击鼠标右键,选择Run Python File in Terminal 。
五步掌握用VSCode进行高效Python开发

文章插图
 
【五步掌握用VSCode进行高效Python开发】可以看见,窗口下方出现了Terminal选项卡,显示了代码的输出 。
对Python代码检查器的支持
你可能在写代码的时候看见过一个弹出框,上面写着代码检查器不可用(linting was not available) 。你可以在弹出框中快速安装一个代码检查器,默认安装的是PyLint 。VSCode也支持其他检查器,包括:flake8、mypy、pydocstyle、pep8、prospector、pyllama、bandit等 。
Python代码检查器页面有配置每一种检查器的详细资料 。注意,代码检查器的选择是项目级别的工作区设置,而不是全局用户设置 。
编辑一个已有的Python项目
在埃拉托斯特尼筛法的例子中,你创建了一个单独的Python文件 。这作为例子来讲很合适,但通常你会创建更大的项目,并在其上工作一段时间 。一个典型的创建新项目的工作流程如下:
  • 创建一个存放项目的文件夹(其中可能包含一个新的Github项目)
  • 切换到新文件夹
  • 用命令代码创建一个初始Python代码文件
在Python项目中使用VSCode会给你带来更多精彩的功能,让我们看看VSCode是怎样对付大型工程的 。
早在上个世纪我还是一名年轻的程序员时,我用调度场算法写过一个将算式解析为中缀表达式的计算器程序 。为了展示VSCode中项目专属的特性,我将算法重构成了Python的一个算式求值库:


推荐阅读