= 1
a = 2
b = a + b
c print(c)
3 使用Visual Studio Code
我们一般不会直接在命令行界面进行编程, 而会利用一个集成编程环境(IDE), 为我们提供文件管理、语法提示、自动补全等等功能。 Python编程流行的IDE有PyCharm,以及我们现在要用的vscode文字编辑器+Python相关插件。
这些集成编辑环境,通常会把.py文件的编辑和python的交互环境结合起来,让我们一边编辑py文件的同时,一边执行代码并查看结果。数据分析完毕时,代码同时也写成了。
3.1 代码的存放
在正式开始之前,选择一个存放代码等等有关文件的文件夹。 为了便于演示,这里选择在桌面上新建一个“python_class”的文件夹, 作为本课程有关代码的存放地点。
但一般建议选择一个比较好的目录,比如你可能有一个地方是专门用来存放课程的地方(比如在“我的文档”下), 在此位置建立python_class较好。这里选择桌面仅仅是为了方便演示。
注:课程文件夹不要放在在C盘根目录下,可能有权限问题。
打开vscode,文件,打开文件夹,打开vscode中的资源管理器,我们发现什么都没有。
3.2 建立的一个源代码文件
选择文件,新建文本文件,直接保存,给这个空白文件起一个名字,如“001.py”。 注意,扩展名必须是“.py”。
当你在vscode编译一个py文件,vscode会自动调用所以和python有关的插件。 vscode会从一个文本编辑器,成为一个集编辑、运行、调试于一身的Python集成开发环境。
当然,你用vscode来写其他语言的代码也可以。
3.3 vscode的界面
右上角出现了播放按钮▶,可以把当前文件的代码从头到尾执行一次。
右下角出现了Python字样,现在进入了Python代码编辑模式。
如果出现了黄底色的Select Interpreter字样,是没指定解释器。等于再问, 写好的代码交给谁来执行?
点一下,在弹出的框中选择你的anaconda安装路径,本案(安装在默认路径)是~\anaconda3\python.exe
。
(如果第一次没弹出,记得点几下图中的刷新按钮 ↻)
注意:
- 如果你在安装anaconda的时候更换了安装路径,这里可能会出现找不到anaconda,进而找不到python解释器的问题,见3.7节,或者找老师。
- 在找不到anaconda的情况下,部分同学会选择让windows系统安装一个python,新手不推荐。
- 不要选择
miniconda
,部分同学会错误地安装了miniconda,新手不推荐。
3.4 第一段代码
我们在文件里写如如下代码,保存(ctrl+s)。
就算你完全不懂python,凭感觉也可以知道这段代码是打印两个变量相加的结果。
3.4.1 预备知识:Python的注释(comment)
先说注释。Python使用井号:#
来表示注释。所谓注释,就是“给人看”的内容,而Python的解释器会直接忽略掉这部分。
- 注释可以出现在任何地方,注意
#
号只会影响同一行右边的代码,因此也可以出现在行尾。 - 注释往往也可以用来临时屏蔽一部分代码,只要在代码的最左侧插入一个
#
,那么整行代码会被Python解释器忽略。这是常用技巧。
我们尝试写几个注释,例如:
# 这段代码会计算a和b相加的结果
= 1
a = 2
b = a + b # 这行代码会计算 a + b
c
# 下面的代码会把c的值打印出来
print(c)
注释是对代码的说明,非常重要:
- 写代码时间长了,肯定会不记得自己写的内容。有时候上午写的,下午就会忘记。
- 多人合作的时候,要读懂彼此的代码,也必须有良好的注释。
特别地,注释是考试的给分点。你的考试程序输出了正确的结果,可以得到合格评价,同时具有良好的编写风格、合理的注释,才能得到更高分。
3.5 执行
代码写好了,执行有几种方式。
3.5.1 Run Python File 按钮 ▶
点击右上角的播放按钮Run Python File,会把当前的py文件,从头到尾执行一次。 你会看到输出了结果3
。
点击垃圾桶图标🗑,终止这个终端。
一般而言,要把文件从头到尾执行一次,就可以用这种方式。
3.5.2 互动执行
如果你要做数据分析之类的任务,需要一般看结果一边写代码,我们会选择互动执行的方式。
使用一种特殊的注释# %%
(井号,2个百分号,中间可以有空格),一般称为“cell separator” 可以把python代码分成一个一个的cell。试一下:
# %%
= 1
a = 2
b print(a)
print(b)
# %%
= a + b
c print(c)
# %%
cell seperator把代码切成了一块一块:两行seperator中间的部分,被视为一个cell。
我们点击第一个run cell,终端只会执行第一个cell,即1到6行的代码。
这一块代码会打印出变量a
和b
的值。
点开终端上的省略号,可以看到这个cell具体执行了什么代码。
同理,点击第二个run cell会执行下一块代码,计算a+b并打印c。
但一般我们用快捷键:
Ctrl + 回车:执行当前cell。(Mac系统可能是Cmd + 回车) Shift + 回车:执行当前cell,并跳到下一个cell。
所以,你可以按住Shift,连续按回车,就可以一个cell一个cell往下执行。
这在进行数据分析的时候会用很多。
单步执行和debug会在后面专门说。
特别地,在互动执行下,每个cell的最后一行的结果会自动显示。 如果只是查看变量的值,这可以让我们少打一个print()
或者display()
。 注意这只在互动模式下生效。
尝试:把上述代码的print(a)
和print(b)
改写。
注意:如果你的anaconda安装路径中有中文(例如你的用户名是中文),可能运行报Bad file descriptor
错误,见3.7节,或者找老师。
3.5.3 变量表
在交互执行的过程中,点击变量表,可以查看当前运行环境中的变量的信息。
3.5.4 脱离vscode执行
python本身是一个独立的可执行程序,和vscode并无关系。这个可执行程序即所谓解释器, 会把源代码从第一行到最后以后执行一次。
因此,你只要告诉python你要执行哪个.py文件即可。
这个一般教程会放在第一部分,但以我们的任务更多是要交互执行,这里只简单演示一下。
在你anaconda prompt或者终端中,进入你刚才新建的python_class目录。
001.py python
结果是一样的。
实际上,右上角的播放按钮,做的是同样的事,只是把多个步骤(进入anaconda环境, 进入工作目录,输入python 001.py等)合并成一个按钮。
3.6 本节要求
- 创建一个用来专门存放本课程代码和数据的文件夹(称为工程目录),如果图省事就在桌面上建立(但不推荐)
- 在上述工程目录中建立一个.py文件,计算上述的 1+2的代码。(这里可能会遇到一大堆问题)
注意
- 安装和配置编程环境是文科生学习编程的第一个大障碍,过了这一关,后面就会顺利起来。
- 历届都有小部分同学一直卡在安装过程,最多的能卡半个学期,不要犹豫,搞不定找老师。
3.7 排错:vscode执行代码出错
3.7.1 运行单元格(run cell)出现 Bad file descriptor 错误
如果你用的是Windows,且你的用户名是中文,那么用vs code的run cell运行,可能会出现如下错误:
(这是某位同学的笔记本电脑,请大家要经常清理自己电脑的屏幕)
注意最后一行
Bad file descriptor (bundled\zeromq\src\epoll.cpp:100)
这个问题可能是中文用户名有关,某个组件(pyzmq)新版本处理中文路径会出错。处理方法有2种, 第一种已经在部分同学的电脑上验证过了,第二钟则尚未验证。
方法1:改环境变量
在windows菜单中选择”编辑系统环境变量”
在弹出的窗口中选择最下方的“环境变量(N)”
可见最下方有TEMP
和TMP
2个环境变量(临时文件所在目录)。双击2个环境变量,都改为C:\Temp
。
最终如图。
重启电脑即可。
方法2:降级pyzmq
进入anaconda prompt(见前一章),依次执行代码
pip uninstall pyzmq <回车>
pip install pyzmq==19.0.2 <回车>
重启vs code即可。
3.7.2 找不到Anaconda
如果不在默认的路径上安装anaconda,比如转移到了d盘,可能在选择解释器(select interpreter)的时候,找不到正确的conda和python路径。这时候需要手动设置你的conda安装路径。
在vscode界面的左下角点击“管理(齿轮图标)” -> “设置”,搜索’conda’,一般有三个选项:
(注意:随着vscode更新,选项也会变多,新版本可能需要你拉滚动条才能找到。)
Conda Path
选择你安装conda路径加上\condabin\
。例如你装到了D:\anaconda3\
下,那么路径就是D:\anaconda3\condabin\
。Default Interpreter Path
选择你安装anaconda的路径,按上面的例子,就是D:\anaconda3\
这时候再进行前面选择解释器的过程,应该就找到conda和解释器了(选择解释器的时候多点几下刷新按钮 ↻)。
3.7.3 执行整个文件,可以得到正确结果,但还是有一串红字
比如你“执行整个文件(右上角的播放按钮)”,最后可以得到结果(比如“3”),但是首次执行的时候出现一串红字错误,然后才是正确结果(这里一时找不到截图),那么可以用上面的方法,把截图中的第一个选项Terminal,设定为Command Prompt
,和截图保持一致即可。