admin 管理员组

文章数量: 887609

文章目录

  • Windows安装Python(图解)
        • 关于 IDLE
  • Linux(Ubuntu)系统安装Python
    • 更新 Python 版本
    • 重新安装 Python
        • 1) 下载源代码
        • 2) 编译
    • 小技巧
  • Mac OS安装Python环境
    • Mac OS X 安装 Python 3.x
  • python不是内部或外部命令的解决方法
  • 如何运行Python程序?
        • 1) 交互式编程
        • 2) 编写源文件
    • Python 交互式编程
    • 编写 Python 源文件
        • 源文件的后缀
        • 源文件的编码格式
        • 运行源文件
  • 第一个Python程序——在屏幕上输出文本
    • 在屏幕上输出字符串
        • 对分号的说明
        • 对 Python 2.x 的说明
    • 在屏幕上输出数字
    • 总结
  • IDE(集成开发环境)是什么
  • Python IDE有哪些,哪款适合初学者?
    • PyCharm
    • Eclipse+PyDev
    • Visual Studio Code
    • Microsoft Visual Studio
  • PyCharm下载和安装教程(包含配置Python解释器)
    • PyCharm下载和安装
    • PyCharm配置Python解释器
  • PyCharm运行Python程序
    • PyCharm创建Python项目
    • PyCharm项目中创建Python文件
  • Python VS Code下载和安装教程
    • VS Code下载和安装
    • VS Code安装Python扩展插件
  • VS Code运行Python程序
    • VS Code创建Python文件
  • Python注释(多行注释和单行注释)用法详解
    • Python 单行注释
    • Python 多行注释
        • 注意事项
    • 注释可以帮助调试程序
  • Python缩进规则(包含快捷键)
        • IDLE 开发环境对缩进量的设置
  • Python编码规范(PEP 8)
  • Python编码规范的重要性
    • Python编码规范到底有多么重要
        • 阅读者>>编程者
        • 编程者>>机器
        • 机器体验也很重要
    • 编码规范的自动化工具
  • Python标识符命名规范
  • Python关键字(保留字)一览表
  • Python内置函数一览表,内置函数和标准库函数的不同

转载于http://c.biancheng/python/

本章重点介绍 Python 编程环境的搭建,包括各个平台下 Python 的下载和安装,常见 IDE 的使用,如何运行 Python 程序等。我还会亲自带着大家编写并运行第一个 Python 程序,让大家认识一下最简单的 Python 代码。

本章的后半部分还介绍了一下 Python 基础语法,包括注释、缩进、编码规范、标识符及命名规范、关键字等。

从本章开始,我们就正式开始学习 Python 代码了。

Windows安装Python(图解)

在 Windows 上安装 Python 和安装普通软件一样简单,下载安装包以后猛击“下一步”即可。

Python 安装包下载地址:https://www.python/downloads/

打开该链接,可以看到有两个版本的 Python,分别是 Python 3.x 和 Python 2.x,如下图所示:


图 1 Python 下载页面截图(包含 Python 2.x 和 Python 3.x 两个版本)

在《Python 2.x和Python 3.x,初学者应如何选择?》一文中提到,Python 3.x 是一次重大升级,为了避免引入历史包袱,Python 3.x 没有考虑与 Python 2.x 的兼容性,这导致很多已有的项目无法顺利升级 Python 3.x,只能继续使用 Python 2.x,而大部分刚刚起步的新项目又使用了 Python 3.x,所以目前官方还需要维护这两个版本的 Python。

我建议初学者直接使用 Python 3.x。截止到目前(2020-01-02),Python 的最新版本是 3.8.x,我们就以该版本为例演示 Windows 下的 Python 安装过程。

点击上图中的版本号或者“Download”按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。


图 2 各个平台的 Python 安装包

对前缀的说明:

  • Windows x86-64开头的是 64 位的 Python 安装程序;
  • Windows x86开头的是 32 位的 Python 安装程序。

对后缀的说明:

  • embeddable zip file表示.zip格式的绿色免安装版本,可以直接嵌入(集成)到其它的应用程序中;
  • executable installer表示.exe格式的可执行程序,这是完整的离线安装包,一般选择这个即可;
  • web-based installer表示通过网络安装的,也就是说下载到的是一个空壳,安装过程中还需要联网下载真正的 Python 安装包。

这里我选择的是“Windows x86-64 executable installer”,也即 64 位的完整的离线安装包。

双击下载得到的 python-3.8.1-amd64.exe,就可以正式开始安装 Python 了,如图3所示。


图 3 Python 安装向导

请尽量勾选Add Python 3.8 to PATH,这样可以将 Python 命令工具所在目录添加到系统 Path 环境变量中,以后开发程序或者运行 Python 命令会非常方便。

Python 支持两种安装方式,默认安装和自定义安装:

  • 默认安装会勾选所有组件,并安装在 C 盘;
  • 自定义安装可以手动选择要安装的组件,并安装到其它盘符。

这里我们选择自定义安装,将 Python 安装到常用的目录,避免C盘文件过多。点击“Customize installation”进行入下一步,选择要安装的 Python 组件。


图 4 选择要安装的 Python 组件

没有特殊要求的话,保持默认即可,也就是全部勾选。

点击“Next”继续,选择安装目录。


图 5 选择安装目录

选择好你常用的安装目录,点击“Install”,等待几分钟就可以完成安装。

安装完成以后,打开 Windows 的命令行程序(命令提示符),在窗口中输入python命令(注意字母p是小写的),如果出现 Python 的版本信息,并看到命令提示符>>>,就说明安装成功了,如下图所示。


图 6 运行 python 命令

运行 python 命令启动的是 python 交互式编程环境,我们可以在>>>后面输入代码,并立即看到执行结果,请看下面的例子。


图 7 在 Python 交互式环境中编写代码

按下Ctrl+Z快捷键,或者输入 exit() 命令即可退出交互式编程环境,回到 Windows 命令行程序。

关于 IDLE

IDLE 是 Python 自带的简易开发环境,安装完成以后,在 Windows 开始菜单中找到Python 3.8文件夹,在这里可以看到 IDLE 工具,我们将在《Python IDLE使用方法详解》一节中详细介绍。


图 8 Python IDLE 简易开发环境

Linux(Ubuntu)系统安装Python

Linux 系统是为编程而生的,因此绝大多数的 Linux 发行版(Ubuntu、CentOS 等)都默认自带了 Python。有的 Linux 发行版甚至还会自带两个版本的 Python,例如最新版的 Ubuntu 会自带 Python 2.x 和 Python 3.x。

打开 Linux 发行版内置的终端(Terminal),输入python命令就可以检测是否安装了 Python,以及安装了哪个版本,如下所示:

[c.biancheng@localhost ~]$ python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到,python命令能够正常运行,并输出了 Python 的版本信息,这表明当前的 Linux 发行版已经自带了 Python 2.7.5。

另外,执行结果最后出现了 Python 命令提示符>>>,这意味着我们进入了 Python 交互式编程环境,可以在这里直接输入代码并查看运行结果,如下所示:

[c.biancheng@localhost ~]$ python
Python 2.7.5 (default, Jun 17 2014, 18:11:42)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print("C语言中文网的网址是:http://c.biancheng")
C语言中文网的网址是:http://c.biancheng
>>> a=100
>>> b=4
>>> a*b
400
>>> exit()
[c.biancheng@localhost ~]$ 

exit() 用来退出 Python 编程环境,回到 Linux 命令行。

大部分的 Linux 发行版会自带 Python 2.x,但是不一定自带 Python 3.x,要想检测当前 Linux 发行版是否安装了 Python 3.x,可以在终端(Terminal)输入python3命令,如下所示:

[c.biancheng@localhost ~]$ Python3
Python 3.6.4 (default , Nov 18 2018 , 13:02:36)
[GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2
Type "help","copyright","credits" or "license" for more information.
>>>

如果python3命令运行成功,并出现 Python 提示符>>>,则表明当前 Linux 发行版已经安装了 Python 3 开发环境,只需执行python3命令就可以启动 Python 3 开发环境。

如果当前 Linux 发行版没有安装 Python 3,或者你觉得现有的 Python 3 版本不够新,那么就需要更新 Python 版本。本节我们以 Ubuntu 为例来进行演示。

更新 Python 版本

在 Ubuntu 终端执行以下两条命令即可更新 Python 版本:

$sudo apt-get update
$sudo apt-get install python3.8

对命令的说明:

  • 第一条命令用来指定更新 /etc/apt/sources.list 和 /etc/apt/sources.list.d 所列出的源地址,这样能够保证获得最新的安装包。
  • 第二条命令用来指定安装 Python 3.8,这是目前最新的 Python 版本。

等待以上两条命令执行完成,再次在终端输入python3命令,就可以看到 Python 交互式编程环境已经更新到 Python 3.8。

重新安装 Python

以上更新方法仅在 Ubuntu 已经安装 Python 的情况下才有效,如果你的 Ubuntu 中没有 Python 环境,或者你想重新安装,那么就得到官网下载源代码,然后自己编译。

1) 下载源代码

Python 官方下载地址:https://www.python/downloads/

打开链接,可以看到各个版本的 Python:


图 1 Python 下载页面截图

点击上图中的版本号或者“Download”按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。


图 2 找到源码包地址

在“Gzipped source tarball”处单击鼠标右键,从弹出菜单中选择“复制链接地址”,即可得到.tgz格式的源码压缩包地址。

然后执行以下命令:

$ wget https://www.python/ftp/python/3.8.1/Python-3.8.1.tgz

解压源码包:

$ tar -zxvf Python-3.8.1.tgz

2) 编译

使用 make 工具进行编译:

$ ./configure --prefix=/usr/local
$ make&&sudo make install

这里的--prefix=/usr/local用于指定安装目录(建议指定)。如果不指定,就会使用默认的安装目录。

经过以上几个命令,我们就安装好了 Python,这时就可以进入终端,输入 Python 指令,验证是否已安装成功。

小技巧

python命令默认调用的是 Python 2.x 开发环境,如果你习惯使用 Python 3.x,感觉每次输入python3命令有点麻烦,那么你可以修改配置,让python命令转而调用 Python 3.x 开发环境。具体命令如下:

$sudo unlink /usr/bin/python
$sudo ln -s /usr/bin/python3.8 /usr/bin/python

注意,第二条命令中 Python 3.x 的路径和版本一定要正确。

上述命令执行完成以后,再次在终端输入python命令,进入的就是 Python 3.8 的交互式开发环境了。

Mac OS安装Python环境

和 Linux 发行版类似,最新版的 Mac OS X 也会默认自带 Python 2.x。

我们可以在终端(Terminal)窗口中输入python命令来检测是否安装了 Python 开发环境,以及安装了哪个版本,如下所示:

c.biancheng:~ mozhiyan$ python
Python 2.7.10 (default, Jul 30 2016, 18:31:42)
[GCC 4.2.1 Compatible Apple LLVM 8.0.0 (clang-800.0.34)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到,python命令能够正常运行,并输出了 Python 的版本信息,这表明当前的 Mac OS X 系统已经自带了 Python 2.7.10。

python命令默认指向 Python 2.x 开发环境,如果想检测当前 Mac OS X 是否安装了 Python 3.x,可以在终端(Terminal)窗口中输入python3命令:

  • 如果系统提示command not found,则说明没有安装 Python 3.x;
  • 如果python3命令运行成功,并显示出版本信息,则说明已经安装了 Python 3.x。

对于没有安装 Python 3.x 的 Mac OS X,想要安装也非常简单,用户只需要下载安装包,然后一直“下一步”即可,这和 Windows 安装 Python 的过程是非常类似的。

Mac OS X 安装 Python 3.x

Python 官方下载地址:https://www.python/downloads/

打开链接,可以看到各个版本的 Python:


图 1 Python 下载页面截图

点击上图中的版本号或者“Download”按钮进入对应版本的下载页面,滚动到最后即可看到各个平台的 Python 安装包。


图 2 各个平台的 Python 安装包

macOS 64-bit installer即为 Mac OS X 系统的 Python 安装包。点击该链接,下载完成后得到一个 python-3.8.1-macosx10.9.pkg 安装包。

双击 python-3.8.1-macosx10.9.pkg 就进入了 Python 安装向导,然后按照向导一步一步向下安装,一切保持默认即可。


图 1 Python安装向导

安装完成以后,你的 Mac OS X 上将同时存在 Python 3.x 和 Python 2.x 的运行环境,在终端(Terminal)输入python命令将进入 Python 2.x 开发环境,在终端(Terminal)输入python3命令将进入 Python 3.x 开发环境。

c.biancheng:~ mozhiyan$ python3
Python 3.8.1 (v3.8.1:1b293b6006, Dec 18 2019, 14:08:53)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

与 Windows 系统类似,Mac OS 下的 Python 3.x 也会自带 IDLE 简易开发工具,你可以在程序列表中找到它。


图 2 安装完成以后的程序列表

python不是内部或外部命令的解决方法

安装 Python 环境没有问题的读者,可直接跳过本节,继续阅读后续文章。

有些读者,在命令行窗口(Linux 称为终端)中输出 python 命令后,却显示“‘python’不是内部或外部命令,也不是可运行的程序或批处理文件”,如图 1 所示:


图 1 输出 python 命令后出错

出现此问题,是因为在当前的路径中找不到 Python.exe 可执行程序,最直接的解决方法就是手动配置环境变量,具体方法如下:

  1. 在“计算机”图标上单击右键,然后在弹出的快捷菜单中选择“属性”,在属性对话框中单击“高级系统设置”超链接,会出现如图 2 所示的“系统属性”对话框。


    图 2 “系统属性”对话框示意图

  2. 如图 2 所示,单击“环境变量”按钮,将弹出“环境变量”对话框,如图 3 所示:


    图 3 “环境变量”对话框

  3. 在图 3 所示的对话框中,选中“系统变量”栏中的 Path 变量,然后单击“编辑”按钮。此时会弹出“编辑系统变量”的对话框,如图 4 所示:


    图 4 “编辑系统变量”对话框

  4. 正如图 4 所示的这样,我们需要在现有 Path 变量值的最前端,手动添加“G:Python\Python36;G:Python\Python36/Scripts;”,注意,中间和最后的分号不要丢掉,另外将 Python 安装路径修改成自己的,然后单击确定按钮,就完成了对环境变量的设置。

    再次强调,不要删除系统变量 Path 中原本存在的变量值,并且其中的分号是英文状态下输出的,否则会产生错误。

修改完成后,再在命令行窗口中输入 python 命令,就应该可以成功进入 Python 交互式解释器。

本节所介绍的解决方法,是以 Windows 操作系统为例进行说明的,但此方式同样适用于其他的操作系统,只是修改过程略有差异,使用其他操作系统的读者,需要自己找到修改 Path 变量的入口,然后按照此方式修改即可。

如何运行Python程序?

Python 是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式:

1) 交互式编程

在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行代码,你还可以继续输入下一行代码,再次回车并查看结果……整个过程就好像我们在和计算机对话,所以称为交互式编程。

2) 编写源文件

创建一个源文件,将所有代码放在源文件中,让解释器逐行读取并执行源文件中的代码,直到文件末尾,也就是批量执行代码。这是最常见的编程方式,也是我们要重点学习的。

本节我们将详细介绍以上两种编程方式。

Python 交互式编程

一般有两种方法进入 Python 交互式编程环境,第一种方法是在命令行工具或者终端(Terminal)窗口中输入python命令,看到>>>提示符就可以开始输入代码了,如下所示:


图 1 使用python命令进入交互式编程环境

第二种进入 Python 交互式编程环境的方法是,打开 Python 自带的 IDLE 工具,默认就会进入交互式编程环境,如下所示:


图 2 打开 IDLE 工具进入交互式编程环境

IDLE 支持代码高亮,看起来更加清爽,所以推荐使用 IDLE 编程。

实际上,你可以在交互式编程环境中输入任何复杂的表达式(包括数学计算、逻辑运算、循环语句、函数调用等),Python 总能帮你得到正确的结果。这也是很多非专业程序员喜欢 Python 的一个原因:即使你不是程序员,但只要输入想执行的运算,Python 就能告诉你正确的答案。

从这个角度来看,Python 的交互式编程环境相当于一个功能无比强大的“计算器”,比 Windows 、Mac OS X 系统自带的计算器的功能强大多了。

编写 Python 源文件

交互式编程只是用来玩玩而已,真正的项目开发还是需要编写源文件的。

Python 源文件是一种纯文本文件,内部没有任何特殊格式,你可以使用任何文本编辑器打开它,比如:

  • Windows 下的记事本程序;
  • Linux 下的 Vim、gedit 等;
  • Mac OS 下的 TextEdit 工具;
  • 跨平台的 Notepad++、EditPlus、UltraEdit 等;
  • 更加专业和现代化的 VS Code 和 Sublime Text(也支持多种平台)。

注意,不能使用写字板、Word、WPS 等排版工具编写 Python 源文件,因为排版工具一般都有内置的特殊格式或者特殊字符,这些会让代码变得“乱七八糟”,不能被 Python 解释器识别。

源文件的后缀

Python 源文件的后缀为.py。任何编程语言的源文件都有特定的后缀,例如:

  • C语言源文件的后缀是.c
  • C++源文件的后缀是.cpp
  • JavaScript 源文件的后缀是.js
  • C# 源文件的后缀是.cs
  • Java 源文件的后缀是.java

后缀只是用来区分不同的编程语言,并不会导致源文件的内部格式发生变化,源文件还是纯文本的。编译器(解释器)、编辑器和用户(程序员)都依赖后缀区分当前源文件属于哪种编程语言。

源文件的编码格式

Python 源文件是一种纯文本文件,会涉及编码格式的问题,也就是使用哪种编码来存储源代码。

Python 3.x 已经将 UTF-8 作为默认的源文件编码格式,所以推荐大家使用专业的文本编辑器,比如 Sublime Text、VS Code、Vim、Notepad++ 等,它们都默认支持 UTF-8 编码。

UTF-8 是跨平台的,国际化的,编程语言使用 UTF-8 是大势所趋。

如果你对编码格式不了了解,请猛击下面的链接学习:

  • ASCII 编码,将英文存储到计算机
  • GB2312 编码和 GBK 编码,将中文存储到计算机
  • Unicode 字符集,将全世界的文字存储到计算机
运行源文件

使用编辑器(我习惯使用 Sublime Text)创建一个源文件,命名为 demo.py,并输入下面的代码:

print("Python教程:http://c.biancheng/python/")a = 100b = 4print(a*b)

输入完成以后注意保存。

运行 Python 源文件有两种方法:

  1. 使用 Python 自带的 IDLE 工具运行源文件。

通过file -> open菜单打开 demo.py 源文件,然后在源文件中的菜单栏中选择Run->Run Module,或者按下 F5 快捷键,就可以执行源文件中的代码了。


图 3 运行效果截图

更多关于 IDLE 的使用方法,请转到《Python IDLE使用方法》。

  1. 在命令行工具或者终端(Terminal)中运行源文件。

进入命令行工具或者终端(Terminal),切换到 demo.txt 所在的目录,然后输入下面的命令就可以运行源文件:

python demo.py

运行完该命令,可以立即看到输出结果,如下图所示。


图 4 在 WIndows 命令行工具中运行 Python 源文件

这里简单介绍一下 python 命令,它的语法非常简单,其基本格式如下:

python <源文件路径>

这里的源文件路径,可以是自盘符(C盘、D盘)开始的绝对路径,比如D:\PythonDemo\demo.py;也可以在执行 python 命令之前,先进入源文件所在的目录,然后只写文件名,也就是使用相对路径。

图4演示的是使用相对路径,下面我们再演示一下使用绝对路径:


图 5 python 命令使用绝对路径

需要注意的是,Windows 系统不区分大小写,在 Windows 平台上输入源文件路径时可以不用注意大小写。但是类 Unix 系统(Mac OS X、Linux 等)都是区分大小写,在这些平台上输入 Python 源文件路径时一定要注意大小写问题。

第一个Python程序——在屏幕上输出文本

本节我将给大家介绍最简单、最常用的 Python 程序——在屏幕上输出一段文本,包括字符串和数字。

Python 使用 print 函数在屏幕上输出一段文本,输出结束后会自动换行。

在屏幕上输出字符串

字符串就是多个字符的集合,由双引号" "或者单引号' '包围,例如:

“Hello World”
“Number is 198”
‘Pyhon教程:http://c.biancheng/python/’

字符串中可以包含英文、数字、中文以及各种符号。

print 输出字符串的格式如下:

print(“字符串内容”)

或者

print(‘字符串内容’)

字符串要放在小括号( )中传递给 print,让 print 把字符串显示到屏幕上,这种写法在 Python 中被称为函数(Function)。

需要注意的是,引号和小括号都必须在英文半角状态下输入,而且 print 的所有字符都是小写。Python 是严格区分大小写的,print 和 Print 代表不同的含义。

print 用法举例:

print("Hello World!")  #输出英文
print("Number is 198")  #输出数字
print("Pyhon教程:http://c.biancheng/python/")  #输出中文

在 IDLE 下的演示效果:


图 1 print 函数用法举例

也可以将多段文本放在一个 print 函数中:

print(
    "Hello World!"
    "Number is 198"
    "http://c.biancheng/python/"
);
print("Hello World!" "Python is great!" "Number is 198.")
print(
    "Hello World!\n"
    "Number is 198\n"
    "http://c.biancheng/python/"
);

注意,同一个 print 函数的字符串之间不会自动换行,加上\n才能看到换行效果。


图 2 将多个字符串放在一个 print 中

对分号的说明

有编程经验的读者应该知道,很多编程语言(比如C语言、C++、Java 等)都要求在语句的最后加上分号;,用来表示一个语句的结束。但是 Python 比较灵活,它不要求语句使用分号结尾;当然也可以使用分号,但并没有实质的作用(除非同一行有更多的代码),而且这种做法也不是 Python 推荐的。

修改上面的代码,加上分号:

print(198);
print("Hello World!"); print("Python is good!");
print("Pyhon教程:http://c.biancheng/python/");

运行结果:

198
Hello World!
Python is good!
Pyhon教程:http://c.biancheng/python/

注意第 2 行代码,我们将两个 print 语句放在同一行,此时必须在第一个 print 语句最后加分号,否则会导致语法错误。

对 Python 2.x 的说明

Python 3.x 要求在使用函数时加上小括号( ),但是以前的 Python 2.x 版本可以省略小括号,也即是写成下面的样子:

print 198
print "Hello World!";  #末尾也可以加上分号
print "Pyhon教程:http://c.biancheng/python/"

我建议大家加上小括号,这样写比较容易理解,而且兼容性好。

在屏幕上输出数字

print 除了能输出字符串,还能输出数字,将数字或者数学表达式直接放在 print 中就可以输出,如下所示:

print( 100 )
print( 65 )
print( 100 + 12 )
print( 8 * (4 + 6) )

注意,输出数字时不能用引号包围,否则就变成了字符串。下面的写法就是一个反面教材,数学表达式会原样输出:

print(“100 + 12”)

运行结果是100 + 12,而不是 112。

另外,和输出字符串不同,不能将多个数字放在一个 print 函数中。例如,下面的写法就是错误的:

print( 100 12 95 );
print(
    80
    26
    205
);

总结

Python 程序的写法比较简单,直接书写功能代码即可,不用给它套上“外壳”。下面我们分别使用C语言、Java 和 Python 输出C语言中文网的网址,让大家对比感受一下。

使用C语言:

#include <stdio.h>
int main()
{
    puts("http://c.biancheng/");
    return 0;
}

使用 Java:

public class HelloJava {
    public static void main(String[] args) {
        System.out.println("http://c.biancheng/");
    }
}

使用 Python:

print("http://c.biancheng/")

IDE(集成开发环境)是什么

IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。

通过前面章节的学习我们知道,运行 C 语言(或 Java 语言)程序必须有编译器,而运行 Python 语言程序必须有解释器。在实际开发中,除了运行程序必须的工具外,我们往往还需要很多其他辅助软件,例如语言编辑器、自动建立工具、除错器等等。这些工具通常被打包在一起,统一发布和安装,例如 PythonWin、MacPython、PyCharm 等,它们统称为集成开发环境(IDE)。

因此可以这么说,集成开发环境就是一系列开发工具的组合套装。这就好比台式机,一个台式机的核心部件是主机,有了主机就能独立工作了,但是我们在购买台式机时,往往还要附带上显示器、键盘、鼠标、U盘、摄像头等外围设备,因为只有主机太不方便了,必须有外设才能玩的爽。

需要注意的是,虽然有一些 IDE 支持多种程序语言的开发(如 Eclipse、NetBeans、VS),但通常来说,IDE 主要还是针对某一特定的程序语言而量身打造的(如 VB)。

一般情况下,程序员可选择的 IDE 类别是很多的,比如说,用 Python 语言进行程序开发,既可以选用 Python 自带的 IDLE,也可以选择使用 PyCharm 和 Notepad++ 作为 IDE。并且,为了称呼方便,人们也常常会将集成开发环境称为编译器或编程软件,对此读者没必要较真儿,就把它当做“乡间俗语”吧。

Python IDE有哪些,哪款适合初学者?

百度搜索“Python IDE”会发现支持 Python 编程的 IDE 有很多,那么对于零基础的初学者,应该使用哪款 IDE 呢?

我个人推荐初学者使用 Python 自带的 IDLE。因为 IDLE 的使用方法很简单,非常适合初学者入门。本教程中使用的也是 Python 自带的 IDLE。

当然,除了 IDLE,还有很多其他的 IDE 供大家选择,这里列出常用的几个,喜欢探索的读者可自行安装使用。

PyCharm

这是由 JetBrains 公司开发的一款 Python 开发工具,在 Windows、Mac OS 和 Linux 操作系统中都可以使用。

PyCharm 具有语法高亮显示、Project(项目)管理代码跳转、智能提示、自动完成、调试、单元测试以及版本控制等一般开发工具都具有的功能,除此之外,它还支持 Django(Python 的 Web 开发框架)框架下进行 Web 开发。

PyCharm 的主窗口如图 1 所示。


图 1 PyCharm主窗口示意图

PyCharm 开发工具可通过其官方网站(http://www.jetbrains/pycharm/)下载获取。需要注意的是,该网站提供了 2 个版本,一个是社区版(免费并且提供源代码,适合多数读者),另一个是专业版(免费试用)。

有关 PyCharm 下载和安装,可阅读《PyCharm下载和安装教程》一节,至于如何使用 PyCharm 运行 Python 程序,可阅读《PyCharm运行Python程序》一节。

Eclipse+PyDev

Eclipse 是一个开源的、基于 Java 的可扩展开发平台,最初主要用于 Java 语言的开发。该平台可通过安装不同的插件,进行不同语言的开发。

PyDev 是一款功能强大的 Eclipse 插件,它可以提供语法高亮、语法分析、语法错误提示,以及大纲视图显示导入的类、库和函数、源代码内部的超链接、运行和调试等功能。

当 Eclipse 在安装 PyDev 插件后,就可以进行 Python 应用开发。其开发界面如图 2 所示。


图 2 Eclipse+PyDev 开发界面

除此之外,还有 PythonWin(只针对 Win32 平台)、MacPython IDE(PythonWin 对应的 Mac 版本)、Emacs 和 Vim(功能强大的文本编辑器,可以用来编写 Python 程序)等,都可以作为执行 Python 程序的 IDE。

有关 Eclipse+PyDev 下载和安装,可阅读《Eclipse+PyDec下载和安装教程》一节,至于如何使用安装有 PyDev 插件的 Eclipse 编写并运行 Python 程序,可阅读《Eclipse+PyDec运行Python程序》一节。

Visual Studio Code

Visual Studio Code,简称 VS Code,是微软公司开发的一款轻量级 IDE。和 PyCharm 一样,它也支持在 Windows、Linux 和 macOS 平台上运行。

VS Code 支持几乎所有主流开发语言的语法高亮、智能代码补全、自定义热键、括号匹配等功能,支持使用插件进行功能扩展,还针对网页开发和云端应用开发做了优化。

值得一提的是,使用 VS Code 编写 Python 代码,无需向其它编译器那样,通过创建项目来管理源代码文件,在 VS Code 中可以直接创建 Python 源代码文件。VS code 的开发界面如图 3 所示。


图 3 VS Code 开发界面

有关 VS Code 下载和安装,可阅读《VS Code下载和安装教程》一节,至于如何使用 VS Code 编写并运行 Python 程序,可阅读《VS Code运行Python程序》一节。

Microsoft Visual Studio

Microsoft Visual Studio,简称 VS,也是 Microsoft(微软)公司开发的一款 IDE。它可用于进行 C# 和 ASP.NET 等应用的开发,也可以作为 Python 的开发工具,只需要在安装时,选择安装 PTVS 插件即可。

PTVS 插件是一个开源插件,它支持编辑、浏览、智能感知、混合 Python/C++ 调试、Djange 等,适用于 Windows、Linux 和 Mac OS 客户端的云计算。

当 VS 安装 PTVS 插件之后,就可以进行 Python 应用开发了,其开发界面如图 4 所示。


图 4 应用 VS 开发 Python 项目

有关 VS 下载和安装教程,可阅读《Visual Studio下载和安装教程》一节,至于如何使用 VS 编写并运行 Python 程序,可阅读《Visual Studio运行Python程序》一节。

PyCharm下载和安装教程(包含配置Python解释器)

PyCharm 是 JetBrains 公司(www.jetbrains)研发,用于开发 Python 的 IDE 开发工具。图 1 所示为 JetBrains 公司开发的多款开发工具,其中很多工具都好评如潮,这些工具可以编写 Python、C/C++、C#、DSL、Go、Groovy、Java、JavaScript、Objective-C、PHP 等编程语言。


图 1 JetBrains 开发工具

PyCharm下载和安装

进入 PyCharm官方下载页面(如图 2 所示),可以看到 PyCharm 有 2 个版本,分别是 Professional(专业版)和 Community(社区版)。其中,专业版是收费的,可以免费试用 30 天;而社区版是完全免费的。


图 2 PyCharm 官方下载页面

强烈建议初学者使用社区版,更重要的是,该版本不会对学习 Python 产生任何影响。

根据图 2 所示点击“下载”按钮,等待下载完成。下载完成后,读者会得到一个 PyCharm 安装包(本节下载的是 pycharm-community-2019.2.2 版本)。双击打开下载的安装包,正式开始安装(如图 3 所示)。


图 3 开始安装界面

直接选择“Next”,可以看到如图 4 所示的对话框,这里是设置 PyCharm 的安装路径,建议不要安装在系统盘(通常 C 盘是系统盘),这里选择安装到 E 盘。


图 4 设置 PyCharm 安装路径

继续点击“Next”,这里需要进行一些设置,可根据图 5 所示,自行选择需要的功能,若无特殊需求,按图中勾选即可;


图 5 安装设置对话框

继续点击“Next”,达到图 6 所示的对话框,这里选择默认即可,点击 “Install”,并等待安装进度条达到 100%,PyCharm 就安装完成了。


图 6 选择开始菜单文件

需要注意的是,首次启动 PyCharm,会自动进行配置 PyCharm 的过程(选择 PyCharm 界面显式风格等等),读者可根据自己的喜好进行配置,由于配置过程非常简单,这里不再给出具体图示。读者也可以直接退出,即表示全部选择默认配置。

PyCharm配置Python解释器

首先安装 PyCharm 完成之后,打开它会显示如下所示的界面:


图 8 PyCharm 初始化界面

在此界面中,可以手动给 PyCharm 设置 Python 解释器。点击图 8 所示的 Configure 选项,选择“Settings”,进入图 9 所示的界面。


图 9 设置 Python 解释器界面

可以看到,“No interpreter” 表示未设置 Python 解释器,这种情况下,可以按图 9 所示,点击设置按钮,选择"add",此时会弹出图 10 所示的窗口。


图 10 添加 Python 解释器界面

按照图 10 所示,选择“System Interpreter”(使用当前系统中的 Python 解释器),右侧找到你安装的 Python 目录,并找到 python.exe,然后选择“OK”。此时显式界面会自动跳到图 9 所示的界面,并显示出可用的解释器,如图 11 所示,再次点击“OK”。


图 11 添加 Python 解释器界面

等待 PyCharm 配置成功,它会再次回到图 8 所示的界面,由此就成功的给 PyCharm 设置好了 Python 解释器。

关于如何使用 PyCharm 运行 Python 程序,可猛击《PyCharm运行Python程序》一文详细了解。

PyCharm运行Python程序

《第一个Python程序》一节中,分别介绍了如何使用 Python IDLE、Python Shell 以及 Sublime Text 编辑并运行 Python 程序。但是,如果要开发复杂的项目,使用 PyCharm、VS Code 等这些强大的 IDE 应该是更不错的选择。

本节仍以第一个 Python 程序为例,给大家介绍如何使用 PyCharm 创建 Python 项目,以及如何编写并运行 Python 程序。

PyCharm创建Python项目

PyCharm 中,往往是通过项目来管理 Python 源代码文件的。虽然对于第一个 Python 程序来说,创建项目来管理似乎有些“大材小用”,但对于初学者来说,学会创建 Python 项目是非常有必要的。

PyCharm 创建项目的步骤是这样的,首先打开 PyCharm,会显示出如图 1 所示的欢迎界面。


图 1 PyCharm 欢迎界面

在该界面中点击“Create New Project”(创建一个新项目),打开如图 2 所示的 Location 对话框,在该对话框中输入项目名称(例如 demo)。


图 2 设置项目名称并配置 Python 解释器

另外,强烈建议初学者单击图中所示的三角按钮,展开 Python 解释器设置界面,按图中所示选用本地的 Python 解释器。默认情况下,PyCharm会选用第一种配置方式,它会自动为项目配置虚拟环境,即向项目中添加运行 Python 程序所必备的文件(例如 Python 解释器和标准库文件),但这些文件对于初学者来说,是晦涩难懂的,对 Python 入门没有任何帮助。

输入好项目名称,并配置好 Python 解释器之后,就可以单击“Create”按钮创建项目。创建好的项目如图 3 所示。


图 3 创建好的 Python 项目

可以看到,使用本地Python解释器,创建的项目是空的。

PyCharm项目中创建Python文件

项目创建完成之后,就可以创建一个 Python 代码文件了,具体操作如下。

首先,在创建好项目的基础上,右键选中该项目,并依次选择“New->Python File” 菜单,如图 4 所示。



图 4 新建 Python 文件流程

此时,就会打开新建 Python 文件的对话框,输入要新建 Python 文件的名字(如 hello),如图 5 所示。


图 5 新建 Python 文件对话框

然后点击“OK”按钮或按“Enter”回车键,即可成功创建一个 Python 文件,如图 6 所示。


图 6 成功创建 Python 文件

Python文件创建成功之后,就可以向该文件中编写 Python 程序。例如,在新创建的 hello 文件中编写第一个Python程序,如图 7 所示。


图 7 向 Python 文件中编写代码

运行此 Python 程序也很简单,只需选择左侧工程目录中的 hello.py 文件,并右键选择“Run’hello’”,如图 8 所示。


图 8 PyCharm 运行 Python 程序

运行结果如图 9 所示。


图 9 程序运行结果示意图

提示:如果该程序已经运行过一次,当再次运行时,可直接点击工具栏中的 Run 箭头按钮,或者使用快捷键“Shift + F10”,都可以运行上次的程序。

Python VS Code下载和安装教程

Visual Studio Code,简称 VS Code,是由微软公司开发的 IDE 工具。与微软其他 IDE(如 Visual Studio)不同的是,Visual Studio Code 是跨平台的,可以安装在 Windows、Linux 和 macOS平台上运行。

不仅如此,Visual Studio Code 没有限定只能开发特定语言程序,事实上只要安装了合适的扩展插件,它可以开发任何编程语言程序,包括 Python。因此,本节就来讲解如何下载并安装 VS Code,使其能够支持 Python 编程。

VS Code下载和安装

VS Code官网提供了 VS Code下载地址 ,如图 1 所示。


图 1 VS Code下载界面

可以看到,考虑到不同的操作系统平台,官方准备了分别适用于 Windows、Linux 和 macOS 操作系统的安装包,读者可根据实际情况,选择适合自己电脑的安装包。

值得一提得是,针对 Windows 系统提供的安装包中,还被细分为 User Installer、System Installer 以及 .zip 版,它们之间的区别是:

  • User Installer:表示 VS Code 会安装到计算机当前账户目录中,意味着使用其他账号登陆计算机的用户将无法使用 VS Code;
  • System Installer:和 User Installer 正好相反,即一人安装,所有账户都可以使用。
  • .zip:这是一个 VS Code 的压缩包,下载后只需解压,不需要安装。也就是说,解压此压缩包之后,直接双击包含的 “code.exe” 文件,即可运行 VS Code。

默认情况下,VS Code 提供的是 User Installer 64 位的版本。

由于笔者电脑使用的 Windows 10 系统,所以有 2 种安装 VS Code 的方式,但由于 .zip 版下载即可使用,无需安装,因此本节选择以 User installer 版本为例,给大家演示如何通过安装包安装 VS Code。

注意,.zip 压缩包中包含的 VS Code 和使用安装包安装,没有任何区别。

下载完成安装包之后,大家会得到一个类似名为 VSCodeUserSetup-x64-1.38.1.exe (笔者下载的是此版本)的文件,双击打开,看到如图 2 所示的安装界面。


图 2 VS Code安装界面

勾选“我接受协议”,然后点击“下一步”,进入图 3 所示的界面。


图 3 选择安装位置

如图 3 所示,建议读者不要将 VS Code 安装到系统盘(通常系统盘是 C 盘),可以安装到其它磁盘中。选择好安装位置后,继续点击“下一步”,进入图 4 所示的界面。


图 4 选择开始菜单文件夹

这里不需要改动,默认即可,直接点击“下一步”,进入图 5 所示的界面。


图 5 选择其他任务

读者可根据自己的操作习惯,勾选适合自己的选项即可,需要注意的是,"添加到 PATH"选项一定要勾选。选择完成后,点击“下一步”,进入图 6 所示的界面。


图 6 安装准备就绪

如图 6 所示,显示的是前面选择对 VS Code 做的配置,确认无误后点击“安装”,即可正式安装 VS Code。安装成功后,会出现如图 7 所示的界面,表示安装成功。


图 7 安装成功界面

点击“完成”,即可启动 VS Code。

VS Code安装Python扩展插件

注意,刚刚安装成功的 VS Code 是没有 Python 扩展的,安装此插件的方法也很简单。打开 VS Code,会进入图 8 所示的欢迎界面。


图 8 VS Code 界面

VS Code 安装 Python 扩展的方法有 2 种,分别是:

  • 按照图 9 所示,在欢迎界面中选择 “Python”,下方会弹出一个对话框,选择 “OK”,即可完成 Python 扩展的安装;


    图 9 安装 Python 扩展插件

  • 安装图 10 所示,点击“扩展”按钮,并搜索 Python 扩展插件,找到合适的扩展(这里选择的是第一个,这是 Python 的调试工具),选择“Install”即可安装成功。


    图 10 安装 Python 扩展插件

有关如何使用 VS Code 运行 Python 程序,可猛击《VS Code运行Python程序》一文详细了解。

VS Code运行Python程序

本节介绍如何使用 VS Code(Visual Studio Code 的简称)编写并运行 Python 程序。值得一提的是,相比 PyCharm、Eclipse+PyDev,使用 VS Code 编写 Python 程序,不用创建项目,直接创建 Python 文件即可。

VS Code创建Python文件

首先,打开 VS Code,会看到如图 1 所示的欢迎界面。


图 1 VS Code 欢迎界面

点击“New File”,或者在菜单栏中依次选择“File -> New File”,如图 2 所示。


图 2 VS Code创建文件

此时可以看到,新建了一个名为“Untitled-1”的文件,此文件是 VS Code 默认创建的文件,没有文件类型,所以在编写 Python 代码前,需要手动将其另存为后缀名为 .py 的文件。

另存为的方式也很简单,使用快捷键“Ctrl+S”,或者在菜单栏中依次选择“File -> Save”,都会弹出如图 3 所示的窗口。


图 3 另存为 .py 文件

在此窗口中,我们可以设置该新建文件的文件名(包括后缀名),还可以自定义该文件的存储位置。

只有重新将新建文件保存为以 .py 为后缀名的文件,VS Code 才能够识别出来是 Python 文件,后期在此文件中编写 Python 代码时,才能高亮显示。

由此,我们就成功的创建了一个名为“demo.py”的 python 源文件,如图 4 所示。


图 4 新建的 Python 文件

创建 Python 文件成功后,就可以在该文件中编写 Python 代码了,这里仍以第一个 Python 程序为例,即向“demo.py”文件中编写如下代码:

print("Hello,World")

代码编写完成后,就可以运行了,具体步骤是,使用组合键“Ctrl+F5”,或者在菜单栏中选择“Debug -> Start Without Debugging”,即可看到如图 5 所示的输出结果。


图 5 运行结果

图 5 显示的信息中,除了运行结果,还有代码执行过程中产生的信息。有读者可能会想,能否只显示运行结果呢?办法是有的,只需进行如下操作。

  1. 手动将我们创建的 Python 文件放到一个文件夹中,然后将此文件夹引入到 VS Code。例如,这里将前面创建的 demo.py 文件放到了一个 Demo 文件夹(新建的),将此文件夹引入到 VS Code 的方法是,在菜单栏中依次选择“File -> Open Folder”(如图 6 所示),然后找到 Demo 文件夹,点击“选择文件夹”,就可以成功将指定文件夹引入到 VS Code 中。


图 6 向 VS Code 引入文件夹

  1. 引入成功,资源管理器(EXPLORER)中如图 7 所示。


图 7 VS Code资源管理器

  1. 在图 7 的基础上,先点击“demo.py”文件(这一步很重要),使 VS Code 右侧显示该文件,然后点击左侧的 Debug 按钮(小甲壳虫图标),再点击“设置”按钮,如图 8 所示。


图 8 跳转到 Debug 界面

注意,VS Code 的右侧一定要显示有建立的 Python 源文件,才能执行此步,否则会出错。

  1. 此时会弹出一个对话框,选择“Python File”,如图 9 所示。


图 9 编译配置

  1. 可以看到,显示出了一个名为“launch.json”的文件,我们需要做的就是将它所包含代码中的 “console”:“integratedTerminal” 改为 “console”: “none”,如图 10 所示。


图 10 修改 launch.json 文件

  1. 然后再次运行 demo.py,可以看出如图 11 所示的运行结果。


图 11 只显示程序运行结果

Python注释(多行注释和单行注释)用法详解

注释(Comments)用来向用户提示或解释某些代码的作用和功能,它可以出现在代码中的任何位置。Python 解释器在执行代码时会忽略注释,不做任何处理,就好像它不存在一样。

在调试(Debug)程序的过程中,注释还可以用来临时移除无用的代码。

注释的最大作用是提高程序的可读性,没有注释的程序简直就是天书,让人吐血!

千万不要认为你自己写的代码规范就可以不加注释,甩给别人一段没有注释的代码是对别人的不尊重,是非常自私的行为;你可以喜欢自虐,但请不要虐待别人。

很多程序员宁愿自己去开发一个应用,也不愿意去修改别人的代码,没有合理的注释是一个重要的原因。虽然良好的代码可以自成文挡,但我们永远不清楚今后阅读这段代码的人是谁,他是否和你有相同的思路;或者一段时间以后,你自己也不清楚当时写这段代码的目的了。

一般情况下,合理的代码注释应该占源代码的 1/3 左右。

Python 支持两种类型的注释,分别是单行注释和多行注释。

Python 单行注释

Python 使用井号#作为单行注释的符号,语法格式为:

# 注释内容

从井号#开始,直到这行结束为止的所有内容都是注释。Python 解释器遇到#时,会忽略它后面的整行内容。

说明多行代码的功能时一般将注释放在代码的上一行,例如:

#使用print输出字符串
print("Hello World!")
print("C语言中文网")
print("http://c.biancheng/python/")
#使用 print输出数字
print(100)
print( 3 + 100 * 2)
print( (3 + 100) * 2 )

说明单行代码的功能时一般将注释放在代码的右侧,例如:

print("http://c.biancheng/python/")  #输出Python教程的地址
print( 36.7 * 14.5 )  #输出乘积
print( 100 % 7 )  #输出余数

Python 多行注释

多行注释指的是一次性注释程序中多行的内容(包含一行)。

Python 使用三个连续的单引号’’'或者三个连续的双引号"""注释多行内容,具体格式如下:

'''
使用 3 个单引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
'''

或者

"""
使用 3 个双引号分别作为注释的开头和结尾
可以一次性注释多行内容
这里面的内容全部是注释内容
"""

多行注释通常用来为 Python 文件、模块、类或者函数等添加版权或者功能描述信息。

注意事项
  1. Python 多行注释不支持嵌套,所以下面的写法是错误的:
'''
外层注释
    '''
    内层注释
    '''
'''
  1. 不管是多行注释还是单行注释,当注释符作为字符串的一部分出现时,就不能再将它们视为注释标记,而应该看做正常代码的一部分,例如:
print('''Hello,World!''')
print("""http://c.biancheng/cplus/""")
print("#是单行注释的开始")

运行结果:

Hello,World!
http://c.biancheng/cplus/
#是单行注释的开始

对于前两行代码,Python 没有将这里的三个引号看作是多行注释,而是将它们看作字符串的开始和结束标志。

对于第 3 行代码,Python 也没有将井号看作单行注释,而是将它看作字符串的一部分。

注释可以帮助调试程序

给代码添加说明是注释的基本作用,除此以外它还有另外一个实用的功能,就是用来调试程序。

举个例子,如果你觉得某段代码可能有问题,可以先把这段代码注释起来,让 Python 解释器忽略这段代码,然后再运行。如果程序可以正常执行,则可以说明错误就是由这段代码引起的;反之,如果依然出现相同的错误,则可以说明错误不是由这段代码引起的。

在调试程序的过程中使用注释可以缩小错误所在的范围,提高调试程序的效率。

Python缩进规则(包含快捷键)

和其它程序设计语言(如 Java、C 语言)采用大括号“{}”分隔代码块不同,Python 采用代码缩进和冒号( : )来区分代码块之间的层次。

在 Python 中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进,表示下一个代码块的开始,而缩进的结束则表示此代码块的结束。

注意,Python 中实现对代码的缩进,可以使用空格或者 Tab 键实现。但无论是手动敲空格,还是使用 Tab 键,通常情况下都是采用 4 个空格长度作为一个缩进量(默认情况下,一个 Tab 键就表示 4 个空格)。

例如,下面这段 Python 代码中(涉及到了目前尚未学到的知识,初学者无需理解代码含义,只需体会代码块的缩进规则即可):

height=float(input("输入身高:")) #输入身高
weight=float(input("输入体重:")) #输入体重
bmi=weight/(height*height)       #计算BMI指数
#判断身材是否合理
if bmi<18.5:
    #下面 2 行同属于 if 分支语句中包含的代码,因此属于同一作用域
    print("BMI指数为:"+str(bmi)) #输出BMI指数
    print("体重过轻")
if bmi>=18.5 and bmi<24.9:
    print("BMI指数为:"+str(bmi)) #输出BMI指数
    print("正常范围,注意保持")
if bmi>=24.9 and bmi<29.9:
    print("BMI指数为:"+str(bmi)) #输出BMI指数
    print("体重过重")
if bmi>=29.9:
    print(BMI指数为:"+str(bmi)) #输出BMI指数
    print("肥胖")

Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样,否则解释器会报 SyntaxError 异常错误。例如,对上面代码做错误改动,将位于同一作用域中的 2 行代码,它们的缩进量分别设置为 4 个空格和 3 个空格,如下所示:

if bmi<18.5:
    print("BMI指数为:"+str(bmi)) #输出BMI指数
   print("体重过轻")

可以看到,第二行代码和第三航代码本来属于同一作用域,但我们手动修改了各自的缩进量,这会导致 SyntaxError 异常错误,如图 1 所示。


图 1 缩进不符合规范导致异常

对于 Python 缩进规则,初学者可以这样理解,Python 要求属于同一作用域中的各行代码,它们的缩进量必须一致,但具体缩进量为多少,并不做硬性规定。

IDLE 开发环境对缩进量的设置

在 IDLE 开发环境中,默认是以 4 个空格作为代码的基本缩进单位。不过,这个值是可以手动改变的,在菜单栏中选择Options -> Configure,会弹出如下对话框:

如图所示,通过拖动滑块,即可改变默认的代码缩进量,例如拖动至 2,则当你使用 Tab 键设置代码缩进量时,会发现按一次 Tab 键,代码缩进 2 个空格的长度。

不仅如此,在使用 IDLE 开发环境编写 Python 代码时,如果想通过设置多行代码的缩进量,可以使用 Ctrl+]Ctrl+[ 快捷键,此快捷键可以使所选中代码快速缩进(或反缩进)。

Python编码规范(PEP 8)

在讲解具体的 Python 编码规范之前,先来看看图 1 中的代码:


图 1 两段功能相同的 Python 代码

对比图 1 中的两段代码你会发现,它们所包含的代码时完全相同的,但很明显,右侧的代码编写格式看上去比左侧的代码段更加规整,阅读起来也会比较轻松、畅快,因为它遵循了最基本的 Python 代码编写规范。

Python 采用 PEP 8 作为编码规范,其中 PEP 是 Python Enhancement Proposal(Python 增强建议书)的缩写,8 代表的是 Python 代码的样式指南。下面仅给大家列出 PEP 8 中初学者应严格遵守的一些编码规则:

  1. 每个 import 语句只导入一个模块,尽量避免一次导入多个模块,例如:

    #推荐
    import os
    import sys
    #不推荐
    import os,sys
    

    关于 import 的含义和用法会在后续介绍,这里不必深究。

  2. 不要在行尾添加分号,也不要用分号将两条命令放在同一行,例如:

    #不推荐
    height=float(input("输入身高:")) ; weight=fioat(input("输入体重:")) ;
    
  3. 建议每行不超过 80 个字符,如果超过,建议使用小括号将多行内容隐式的连接起来,而不推荐使用反斜杠 \ 进行连接。例如,如果一个字符串文本无法实现一行完全显示,则可以使用小括号将其分开显示,代码如下:

    #推荐
    s=("C语言中文网是中国领先的C语言程序设计专业网站,"
    "提供C语言入门经典教程、C语言编译器、C语言函数手册等。")
    #不推荐
    s="C语言中文网是中国领先的C语言程序设计专业网站,\
    提供C语言入门经典教程、C语言编译器、C语言函数手册等。"
    

    注意,此编程规范适用于绝对大多数情况,但以下 2 种情况除外:

    • 导入模块的语句过长。
    • 注释里的 URL。
  4. 使用必要的空行可以增加代码的可读性,通常在顶级定义(如函数或类的定义)之间空两行,而方法定义之间空一行,另外在用于分隔某些功能的位置也可以空一行。比如说,在图 1 右侧这段代码中,if 判断语句同之前的代码多实现的功能不同,因此这里可以使用空行进行分隔。

  5. 通常情况下,在运算符两侧、函数参数之间以及逗号两侧,都建议使用空格进行分隔。

以上就是初学者应该遵循的部分 Python 编码规范,如果想了解更多 PEP 8 的详细信息,可访问 PEP 8官方介绍。

Python编码规范的重要性

很多去 Google 参观的人,在用完洗手间后都有这样的疑惑,马桶前面的门上怎么会贴着 Python 编码规范?要知道,Google 对编码规范的要求极其严格,这也能从侧面说明编码规范的重要性。

对于编码规范的认知,很多初学者还仅停留在初级阶段,即只知道编码规范有用,比如命名时使用驼峰式的格式(如 TheFirstDemo),而至于为什么要求这样严格,就不是很清楚了。

本节,将给读者扫除以下 2 个盲区:

  1. Python 编码规范到底有多么重要,它对于业务开发来说,究竟有哪些帮助?
  2. 有哪些流程和工具,可以强制你遵循规定好的编码规范呢?

注意,在讲解过程,会引用以下 2 个编码规范来举例,分别是:

  • 《8 号 Python 增强规范》,通常称之为 PEP8;
  • 《Google Python 风格规范》 简称为 Google Style,这是源自 Google 内部公开发布的社区版本,其目的是为了让 Google 旗下所有 Python 开源项目的编程风格统一。

以上这 2 个编码规范,Google Style 比 PEP8 更为严格,因为 PEP8 的主要面向群体是个人和小团队开发者,而 Google Style 则能够胜任大团队甚至是企业。

Python编码规范到底有多么重要

Python 编码规范重要性的原因用一句话来概括就是:统一的编码规范可以提高开发效率。

而影响开发效率的有 3 类对象,分别是阅读者、编程者和机器,它们的优先级是阅读者>>编程者>>机器(>>表示远远大于)。

阅读者>>编程者

写过代码的人应该深有体会,在实际工作中真正用来码代码的时间,远比阅读或者调试的时间要少。事实也是如此,有研究表明,软件工程中 80% 的时间都在阅读代码。

因此,如果想提高开发效率,首先要优化的不是码代码的速度,而是阅读代码的体验。

其实,很多编码规范本身就是为优化读者体验而存在的,拿命名原则来说,PEP8 第 38 条规定命名不能是无意义的单字母,有意义的名称可以很大程序提高阅读者的体验。

编程者>>机器

说完了阅读者的体验,再来聊聊编程者的体验。笔者常常见到的一个错误倾向就是过度简化自己的代码,这样做会大大降低代码的可阅读性,并且一旦出现 BUG,也不容易检查出来。

例如,阅读如下这行程序:

result = [(x, y) for x in range(10) for y in range(5) if x * y > 10]

上面这行代码还可以改写成如下这种形式:

result = []
for x in range(10):
  for y in range(5):
     if x * y > 10:
       result.append((x, y))

以上代码,涉及到了列表和判断循环结构的相关知识,由于还未学到,初学者不需要理解。

对比这 2 种写法,显然后者调理更清楚,更容易理解,编写起来也更轻松。

机器体验也很重要

每个人都希望自己编写的代码能正确、高效地在电脑上执行,但是一些危险的编程风格,不仅会影响程序的正确性,也容易成为代码效率的瓶颈。

例如,PEP8 和 Google Style 都特别强调了,何时使用 is, 何时使用 ==,何时使用隐式布尔转换。不仅如此,Google Style 2.8 还对遍历方式的选择作出了明确限制。

在编程过程中,只要严格遵守编码规范,编写出的代码通常都很健壮,可移植性也很高。

编码规范的自动化工具

既然编码规范的终极目标是提高开发效率。所以,如果每次写代码都需要在代码规范上额外花很多时间,就达不到我们的初衷了。

首先,你需要根据自己的具体工作环境,选择或者制定适合自己公司或团队的编码规范。市面上可以参考的规范,也就是在文章开头提到的 PEP8 和 Google Style。

要知道,没有放之四海而皆准的规范,我们必须要因地制宜。例如在 Google 中,因为历史原因 C++ 不使用异常,引入异常对整个代码库带来的风险已经远大于它的益处,所以在它的 C++ 代码规范中,禁止使用异常。

一旦确定了整个团队所遵从的编码规范,就一定要强制执行,有什么好的办法呢?靠强制代码评审和强制静态或者动态 linter。具体流程是:

  1. 在代码评审工具里,添加必须的编码规范环节;
  2. 把团队确定的代码规范写进 Pylint 里,能够在每份代码提交前自动检查,不通过的代码无法提交。

整合之后,你的团队工作流程就会变成图 1 所示的这样。


图 1 自动检查编码规范的工作流程

学到这里,相信你对代码风格的重要性有了全新的认识。

Python标识符命名规范

简单地理解,标识符就是一个名字,就好像我们每个人都有属于自己的名字,它的主要作用就是作为变量、函数、类、模块以及其他对象的名称。

Python 中标识符的命名不是随意的,而是要遵守一定的命令规则,比如说:

  1. 标识符是由字符(A~Z 和 a~z)、下划线和数字组成,但第一个字符不能是数字。

  2. 标识符不能和 Python 中的保留字相同。有关保留字,后续章节会详细介绍。

  3. Python中的标识符中,不能包含空格、@、% 以及 $ 等特殊字符。

    例如,下面所列举的标识符是合法的:

    UserID
    name
    mode12
    user_age

    以下命名的标识符不合法:

    4word #不能以数字开头
    try #try是保留字,不能作为标识符
    $money #不能包含特殊字符

  4. 在 Python 中,标识符中的字母是严格区分大小写的,也就是说,两个同样的单词,如果大小格式不一样,多代表的意义也是完全不同的。比如说,下面这 3 个变量之间,就是完全独立、毫无关系的,它们彼此之间是相互独立的个体。

    number = 0
    Number = 0
    NUMBER = 0

  5. Python 语言中,以下划线开头的标识符有特殊含义,例如:

    • 以单下划线开头的标识符(如 _width),表示不能直接访问的类属性,其无法通过 from…import* 的方式导入;
    • 以双下划线开头的标识符(如__add)表示类的私有成员;
    • 以双下划线作为开头和结尾的标识符(如 init),是专用标识符。

    因此,除非特定场景需要,应避免使用以下划线开头的标识符。

另外需要注意的是,Python 允许使用汉字作为标识符,例如:

C语言中文网 = “http://c.biancheng”

但我们应尽量避免使用汉字作为标识符,这会避免遇到很多奇葩的错误。

标识符的命名,除了要遵守以上这几条规则外,不同场景中的标识符,其名称也有一定的规范可循,例如:

  • 当标识符用作模块名时,应尽量短小,并且全部使用小写字母,可以使用下划线分割多个字母,例如 game_mian、game_register 等。
  • 当标识符用作包的名称时,应尽量短小,也全部使用小写字母,不推荐使用下划线,例如 com.mr、com.mr.book 等。
  • 当标识符用作类名时,应采用单词首字母大写的形式。例如,定义一个图书类,可以命名为 Book。
  • 模块内部的类名,可以采用 “下划线+首字母大写” 的形式,如 _Book;
  • 函数名、类中的属性名和方法名,应全部使用小写字母,多个单词之间可以用下划线分割;
  • 常量命名应全部使用大写字母,单词之间可以用下划线分割;

有读者可能会问,如果不遵守这些规范,会怎么样呢?答案是程序照样可以运行,但遵循以上规范的好处是,可以更加直观地了解代码所代表的含义,以 Book 类为例,我们可以很容易就猜到此类与书有关,虽然将类名改为 a(或其它)不会影响程序运行,但通常不这么做。

Python关键字(保留字)一览表

保留字是 Python 语言中一些已经被赋予特定意义的单词,这就要求开发者在开发程序时,不能用这些保留字作为标识符给变量、函数、类、模板以及其他对象命名。

Python 包含的保留字可以执行如下命令进行查看:

>>> import keyword
>>> keyword.kwlist
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]

所有的保留字,如下表所示:

andasassertbreakclasscontinue
defdelelifelseexceptfinally
forfromFalseglobalifimport
inislambdanonlocalnotNone
orpassraisereturntryTrue
whilewithyield

需要注意的是,由于 Python 是严格区分大小写的,保留字也不例外。所以,我们可以说 if 是保留字,但 IF 就不是保留字。

在实际开发中,如果使用 Python 中的保留字作为标识符,则解释器会提示“invalid syntax” 的错误信息,如图 2 所示。


图 2 保留字作标识符报错信息示意图

Python内置函数一览表,内置函数和标准库函数的不同

Python 解释器自带的函数叫做内置函数,这些函数可以直接使用,不需要导入某个模块。

如果你熟悉 Shell 编程,了解什么是 Shell 内置命令,那么你也很容易理解什么是 Python 内置函数,它们的概念是类似的。

将使用频繁的代码段封装起来,并给它起一个名字,以后使用的时候只要知道名字就可以,这就是函数。函数就是一段封装好的、可以重复使用的代码,它使得我们的程序更加模块化,不需要编写大量重复的代码。

内置函数和标准库函数是不一样的。

Python 解释器也是一个程序,它给用户提供了一些常用功能,并给它们起了独一无二的名字,这些常用功能就是内置函数。Python 解释器启动以后,内置函数也生效了,可以直接拿来使用。

Python 标准库相当于解释器的外部扩展,它并不会随着解释器的启动而启动,要想使用这些外部扩展,必须提前导入。Python 标准库非常庞大,包含了很多模块,要想使用某个函数,必须提前导入对应的模块,否则函数是无效的。

内置函数是解释器的一部分,它随着解释器的启动而生效;标准库函数是解释器的外部扩展,导入模块以后才能生效。一般来说,内置函数的执行效率要高于标准库函数。

Python 解释器一旦启动,所有的内置函数都生效了;而导入标准库的某个模块,只是该模块下的函数生效,并不是所有的标准库函数都生效。

内置函数的数量必须被严格控制,否则 Python 解释器会变得庞大和臃肿。一般来说,只有那些使用频繁或者和语言本身绑定比较紧密的函数,才会被提升为内置函数。

例如,在屏幕上输出文本就是使用最频繁的功能之一,所以 print() 是 Python 的内置函数。

在 Python 2.x 中,print 是一个关键字;到了 Python 3.x 中,print 变成了内置函数。

除了 print() 函数,Python 解释器还提供了更多内置函数,下表列出了 Python 3.x 中的所有内置函数。

内置函数
abs()delattr()hash()memoryview()set()
all()dict()help()min()setattr()
any()dir()hex()next()slicea()
ascii()divmod()id()object()sorted()
bin()enumerate()input()oct()staticmethod()
bool()eval()int()open()str()
breakpoint()exec()isinstance()ord()sum()
bytearray()filter()issubclass()pow()super()
bytes()float()iter()print()tuple()
callable()format()len()property()type()
chr()frozenset()list()range()vars()
classmethod()getattr()locals()repr()zip()
compile()globals()map()reversed()import()
complex()hasattr()max()round()

表 1 中各个内置函数的具体功能和用法,可通过访问 https://docs.python/zh-cn/3/library/functions.html 进行查看。

注意,不要使用内置函数的名字作为标识符使用(例如变量名、函数名、类名、模板名、对象名等),虽然这样做 Python 解释器不会报错,但这会导致同名的内置函数被覆盖,从而无法使用。例如:

>>> print = "http://c.biancheng/python/"  #将print作为变量名
>>> print("Hello World!")  #print函数被覆盖,失效
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    print("Hello World!")
TypeError: 'str' object is not callable

本文标签: 环境 教程 python