1. 课前甜点
如果你经常在电脑上工作,总会有些任务会想让它自动化。比如,对一大堆文本文件进行查找替换,对很多照片文件按照比较复杂的规则重命名并放入不同的文件夹。也可能你想写一个小型的数据库应用,一个特定的图形界面应用,或者一个简单的游戏。
如果你是专业的软件开发人员,你可能需要编写一些 C/C++/Java 库,但总觉得通常的 编写、编译、测试、再次编译 流程太慢了。可能给这样的库写一组测试,就是很麻烦的工作了。或许你写了个软件,可以支持插件扩展语言,但你不想为了自己这一个应用,专门设计和实现一种新语言了。
那么,Python 正好能满足你的需要。
对于这些任务,你也可以写 Unix shell 脚本或者 Windows 批处理完成,但是 shell 脚本最擅长移动文件和替换文本,并不适合 GUI 界面或者游戏开发。你可以写一个 C/C++/Java 程序,但是可能初稿都要很长的开发时间。Python 的使用则更加简单,可以在 Windows,Mac OS X,以及 Unix 操作系统上使用,而且可以帮你更快地完成工作。
Python 很容易使用,但它是一种真正的编程语言,提供了很多数据结构,也支持大型程序,远超 shell 脚本或批处理文件的功能。Python 还提供比 C 语言更多的错误检查,而且作为一种 “超高级语言”,它有高级的内置数据类型,比如灵活的数组和字典。正因为这些更加通用的数据类型,Python 能够应付更多的问题,超过 Awk 甚至 Perl,而且很多东西在 Python 中至少和那些语言同样简单。
Python 允许你将程序划分为能在其他的 Python 程序中重复利用的模块。它内置了很多的标准模块,你可以在此基础上开发程序——也可以作为例子,开始学习 Python 编程。例如,一切内置模块提供诸如文件输入输出、系统调用、套接字、甚至图形界面接口工作包比如 Tk。
Python 是一种解释型语言,在程序开发阶段可以为你节省大量时间,因为不需要编译和链接。解释器可以交互式使用,这样就可以方便地尝试语言特性,写一些一次性的程序,或者在自底向上的程序开发中测试功能。它也是一个顺手的桌面计算器。
Python 程序的书写是紧凑而易读的。Python 代码通常比同样功能的 C,C++,Java 代码要短很多,有如下几个原因:
- 高级数据类型允许在一个表达式中表示复杂的操作;
- 代码块的划分是按照缩进而不是成对的花括号;
- 不需要预先定义变量或参数。
Python 是 “可扩展的”:如果你知道怎么写 C 语言程序,就能很容易地给解释器添加新的内置函数或模块,不论是让关键的操作以最高速度运行,还是把 Python 程序链接到只提供预编译程序的库(比如硬件相关的图形库)。一旦你真正链接上了,就能在 Python 解释器中扩展或者控制 C 语言编写的应用了。
顺便提一下,这种语言的名字(python 一词直译为 “蟒蛇”)得名自 BBC 节目 “Monty Python的飞行马戏团” ,而与爬行动物没有关系。在文档中用 Monty Python 来开玩笑不只是被允许的,还是被推荐的!
现在你已经对 Python 跃跃欲试了,想要深入了解一些细节了。因为学习语言的最佳方式是使用它,本教程邀请你一边阅读,一边在 Python 解释器中玩耍。
在下一章节,会讲解使用解释器的方法。看起来相当枯燥,但是对于尝试后续的例子来说,是非常关键的。
教程的其他部分将通过示例介绍 Python 语言和系统中的不同功能,开始是比较简单的表达式、语句和数据类型,然后是函数和模块,最终接触一些高级概念,比如异常、用户定义的类。
2. 使用 Python 解释器
2.1. 调用解释器
Python 解释器在其被使用的机器上通常安装为 /usr/local/bin/python3.8
;将 /usr/local/bin
加入你的 Unix 终端的搜索路径就可以通过键入以下命令来启动它:
python3.8
就能运行了 1 。安装时可以选择安装目录,所以解释器也可能在别的地方;可以问问你身边的 Python 大牛,或者你的系统管理员。(比如 /usr/local/python
也是比较常用的备选路径)
在 Windows 机器上当你从 Microsoft Store 安装 Python 之后,python3.8
命令将可使用。 如果你安装了 py.exe 启动器,你将可以使用 py
命令。 参阅 附录:设置环境变量 了解其他启动 Python 的方式。
在主提示符中输入文件结束字符(在 Unix 系统中是 Control-D,Windows 系统中是 Control-Z)就退出解释器并返回退出状态为0。如果这样不管用,你还可以写这个命令退出:quit()
。
解释器的行编辑功能在支持 GNU Readline 库的系统中也包括交互式编辑,历史替换和代码补全等。 检测是否支持行编辑最快速的方式是在首次出现 Python 提示符时输入 Control-P。 如果听到“哔”提示音,就说明支持行编辑;请参阅附录 交互式编辑和编辑历史 了解有关功能键的介绍。 如果什么都没发生,或是回显了 ^P
,说明不支持行编辑;你只能用退格键从当前行中删除字符。
解释器运行的时候有点像 Unix 命令行:在一个标准输入 tty 设备上调用,它能交互式地读取和执行命令;调用时提供文件名参数,或者有个文件重定向到标准输入的话,它就会读取和执行文件中的 脚本。
另一种启动解释器的方式是 python -c command [arg] ...
,其中 command 要换成想执行的指令,就像命令行的 -c
选项。由于 Python 代码中经常会包含对终端来说比较特殊的字符,通常情况下都建议用英文单引号把 command 括起来。
有些 Python 模块也可以作为脚本使用。可以这样输入:python -m module [arg] ...
,这会执行 module 的源文件,就跟你在命令行把路径写全了一样。
在运行脚本的时候,有时可能也会需要在运行后进入交互模式。这种时候在文件参数前,加上选项 -i
就可以了。
关于所有的命令行选项,请参考 命令行与环境。
2.1.1. 传入参数
如果可能的话,解释器会读取命令行参数,转化为字符串列表存入 sys
模块中的 argv
变量中。执行命令 import sys
你可以导入这个模块并访问这个列表。这个列表最少也会有一个元素;如果没有给定输入参数,sys.argv[0]
就是个空字符串。如果脚本名是 '-'``(标准输入)时,``sys.argv[0]
就是 '-'
。使用 -c
命令 时,sys.argv[0]
就会是 '-c'
。如果使用选项 -m
module,sys.argv[0]
就是包含目录的模块全名。在 -c
command 或 -m
module 之后的选项不会被解释器处理,而会直接留在 sys.argv
中给命令或模块来处理。
2.1.2. 交互模式
在终端(tty)输入并执行指令时,我们说解释器是运行在 交互模式(interactive mode)。在这种模式中,它会显示 主提示符(primary prompt),提示输入下一条指令,通常用三个大于号(>>>
)表示;连续输入行的时候,它会显示 次要提示符,默认是三个点(...
)。进入解释器时,它会先显示欢迎信息、版本信息、版权声明,然后就会出现提示符:
$ python3.8
Python 3.8 (default, Sep 16 2015, 09:25:04)
[GCC 4.8.2] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
多行指令需要在连续的多行中输入。比如,以 if
为例:
>>>
>>> the_world_is_flat = True
>>> if the_world_is_flat:
... print("Be careful not to fall off!")
...
Be careful not to fall off!
有关交互模式的更多内容,请见 交互模式。
2.2. 解释器的运行环境
2.2.1. 源文件的字符编码
默认情况下,Python 源码文件以 UTF-8 编码方式处理。在这种编码方式中,世界上大多数语言的字符都可以同时用于字符串字面值、变量或函数名称以及注释中——尽管标准库中只用常规的 ASCII 字符作为变量或函数名,而且任何可移植的代码都应该遵守此约定。要正确显示这些字符,你的编辑器必须能识别 UTF-8 编码,而且必须使用能支持打开的文件中所有字符的字体。
如果不使用默认编码,要声明文件所使用的编码,文件的 第一 行要写成特殊的注释。语法如下所示:
# -*- coding: encoding -*-
其中 encoding 可以是 Python 支持的任意一种 codecs
。
比如,要声明使用 Windows-1252 编码,你的源码文件要写成:
# -*- coding: cp1252 -*-
关于 第一行 规则的一种例外情况是,源码以 UNIX “shebang” 行 开头。这种情况下,编码声明就要写在文件的第二行。例如:
#!/usr/bin/env python3
# -*- coding: cp1252 -*-
如果想要查看编码的详细,请参阅标准编码
备注
-
1
在Unix系统中,Python 3.x解释器默认安装后的执行文件并不叫作
python
,这样才不会与同时安装的Python 2.x冲突。
后续还会更新哒,喜欢观看官方文档学习的同学,关注一波哦。我与你们同在···