Python 是荷兰人 Guido van Rossum(吉多·范罗苏姆,中国程序员称其为 “龟叔”)在 1990 年初开发的一种解释型编程语言。Python 源代码遵循 GPL(GNU General Public License)协议,现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
Python 的诞生是极具戏曲性的,据 Guido 自述记载,Python 语言是在圣诞节期间为了打发无聊的时间而开发的,之所以会选择 Python 作为该编程语言的名字,是因为 Guido 是 Monty Python 戏剧团的忠实粉丝。
Python 语言是在 ABC 语言的基础上发展而来,其设计的初衷是成为 ABC 语言的替代品。ABC 语言虽然是一款功能强大的高级语言,遗憾的是,由于 ABC 语言不开放的原因,导致它没有得到普及应用。基于这个考虑,Guido 在开发 Python 之初就决定将其开源。
Python 中不仅添加了许多 ABC 语言没有的功能,同时,还为其设计了各种丰富而强大的库,利用这些 Python 库,程序员可以把使用其它语言制作的各类模块(尤其是 C 语言和 C++)很轻松地“黏连”在一起,因此 Python 又常被称为 “胶水” 语言。
注:这里所说的库和模块,简单地理解就是一个个的源文件,每个文件中都包含可实现各种功能的方法(也可称为函数)。
1. Python 简介
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于 PHP 和 Perl 语言。
Python 是交互式语言:这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是面向对象语言: 这意味着 Python 支持面向对象的风格或代码封装在对象的编程技术。
Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。
Python 发展历史:
(1) Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
(2) Python 2.0 于 2000 年 10 月 16 日发布,增加了实现完整的垃圾回收,并且支持 Unicode。
(3) Python 3.0 于 2008 年 12 月 3 日发布,此版不完全兼容之前的 Python 源代码。不过,很多新特性后来也被移植到旧的 Python 2.6/2.7 版本。
(4) Python 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。Python 2.7 被确定为最后一个 Python 2.x 版本,它除了支持 Python 2.x 语法外,还支持部分 Python 3.1 语法。
Python 特点:
(1) 易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
(2) 易于阅读:Python 代码定义的更清晰。
(3) 易于维护:Python 的成功在于它的源代码是相当容易维护的。
(4) 一个广泛的标准库:Python 的最大的优势之一是丰富的库,跨平台的,在 UNIX,Windows 和Macintosh 兼容很好。
(5) 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
(6) 可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。
(7) 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C/C++ 完成那部分程序,然后从你的 Python 程序中调用。
(8) 数据库:Python 提供所有主要的商业数据库的接口。
(9) GUI 编程:Python 支持 GUI 可以创建和移植到许多系统调用。
(10) 可嵌入: 可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得 "脚本化" 的能力。
2. Python 开发环境配置
Python 可应用于多种平台包括 Windows、Linux 和 Mac OS X 等,这里重点关注 Windows 和 Linux 环境下的配置。
Python 官网:https://www.python.org/
Python 文档地址:https://www.python.org/doc/
1) Windows 下安装 Python
在 Windows 上安装 Python 和安装普通软件一样简单,下载地址: https://www.python.org/downloads/windows/ 。
Python 有两个版本的 Python,分别是 Python 3.x 和 Python 2.x,建议初学者直接使用 Python 3.x,本文以 3.8.1 的文件下载列表为例:
Python 3.8.1 - Dec. 18, 2019
Note that Python 3.8.1 cannot be used on Windows XP or earlier.
Download Windows help file
Download Windows x86-64 embeddable zip file
Download Windows x86-64 executable installer
Download Windows x86-64 web-based installer
Download Windows x86 embeddable zip file
Download Windows x86 executable installer
Download Windows x86 web-based installer
前缀说明:
以 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 位的完整的离线安装包。
请尽量勾选 Add Python 3.8 to PATH,这样可以将 Python 命令工具所在目录添加到系统 Path 环境变量中,便于命令行运行 Python 命令。
Python 支持两种安装方式,默认安装和自定义安装:
默认安装会勾选所有组件,并安装在 C 盘;
自定义安装可以手动选择要安装的组件,并安装到其它盘符。
初学者建议选择默认安装。
2) Linux 下安装 Python
绝大多数的 Linux 发行版(Ubuntu、CentOS 等)都默认自带了 Python。有的 Linux 发行版甚至还会自带两个版本的 Python(Python 2.x 和 Python 3.x)。
打开 Linux 终端(Terminal),输入 python 命令就可以检测是否安装了 Python,以及安装了哪个版本,如下所示:
$ python -V
Python 2.7.5
注:当前的 Linux 发行版已经自带了 Python 2.7.5。
大部分的 Linux 发行版会自带 Python 2.x,检测当前 Linux 发行版是否安装了 Python 3.x,可以在终端(Terminal)输入 python3 命令,如下所示:
$ python3 -V
-bash: python3: command not found
注:当前的 Linux 发行版没有带 Python 3.x。如果需要使用 Python 3 (或现有 Python 3 版本不够新),那么就需要更新 Python 版本,这里以 Ubuntu 为例。
(1) 更新 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 -V 命令,查看 Python 3.x 版本。
(2) 下载 Python 源码安装
在 apt-get 安装方式不作用时,可以尝试下载源代码,自己编译安装,当然,对 Linux 系统不熟悉的初学者要谨慎操作。
从 Python 官方(https://www.python.org/downloads/)下载页面,选择指定版本的 “Gzipped source tarball” 源码压缩包 (.tgz 格式) 的地址。
运行如下命令:
$ wget https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tgz
$ tar -zxvf Python-3.8.1.tgz
进入 tar 解开的目录,使用 make 工具进行编译:
$ ./configure --prefix=/usr/local
$ make && sudo make install
这里的 --prefix=/usr/local 用于指定安装目录(建议指定)。如果不指定,就会使用默认的安装目录。
在终端输入 python3 -V 命令,查看 Python 3.x 版本。
3) Docker 部署 Python
参考 “Docker基础知识 (6) - 使用 Docker 部署常用的应用程序” 的 “8. 部署 Python”。
3. Python 开发工具
IDE 是 Integrated Development Environment 的缩写,中文称为集成开发环境,用来表示辅助程序员开发的应用软件,是它们的一个总称。
用 Python 语言进行程序开发,既可以用 Python 自带的 IDLE,也可以使用 PyCharm 或 Eclipse+PyDev 等作为 IDE。
1) PyCharm
PyCharm 由 JetBrains 公司开发的一款 Python 开发工具,在 Windows、Mac OS 和 Linux 操作系统中都可以使用。
PyCharm 具有语法高亮显示、Project(项目)管理代码跳转、智能提示、自动完成、调试、单元测试以及版本控制等一般开发工具都具有的功能,除此之外,它还支持 Django(Python 的 Web 开发框架)框架下进行 Web 开发。
PyCharm 开发工具可通过其官方网站下载获取。需要注意的是,该网站提供了 2 个版本,一个是社区版(免费并且提供源代码,适合多数读者),另一个是专业版(免费试用)。
PyCharm 官网:http://www.jetbrains.com/pycharm/
2) Eclipse + PyDev
Eclipse 是一个开源的、基于 Java 的可扩展开发平台,最初主要用于 Java 语言的开发。该平台可通过安装不同的插件,进行不同语言的开发。
PyDev 是一款功能强大的 Eclipse 插件,它可以提供语法高亮、语法分析、语法错误提示,以及大纲视图显示导入的类、库和函数、源代码内部的超链接、运行和调试等功能。
除此之外,还有 PythonWin(只针对 Win32 平台)、MacPython IDE(PythonWin 对应的 Mac 版本)、Emacs 和 Vim(功能强大的文本编辑器,可以用来编写 Python 程序)等,都可以作为执行 Python 程序的 IDE。
Eclipse+PyDev 的安装要比 PyCharm 复杂,大致分为以下 3 个步骤:
(1) 安装 JRE(Java 运行环境)或 JDK(Java 开发工具包),Eclipse 是基于 Java 的开发工具,必须有 Java 运行环境才能运行;
(2) 下载和安装 Eclipse;
(3) 安装 PyDev 插件,运行 Eclipse 后,在菜单 “Help->Install New Software”,在对话框的 Location 文本框中,输出 PyDev 插件的下载地址(http://pydev.org/updates)。
JDK: https://www.oracle.com/java/technologies/downloads/
Eclipse: https://www.eclipse.org/downloads/
PyDev 插件安装成功后,还需要设置 Python 解释器,具体步骤为:
(1) 打开 Eclipse,选择菜单 “Window -> Preferences”,弹回设置对话框;
(2) 选择 “PyDev -> Interpreters -> Python Interpreter”,这里可以通过点击 "Config first in PATH" 按钮,通过在 Path 路径中找到 Python 解释器,也可以点击 “Browse for Python/pypy exe” 按钮,手动找到 Python 解释器。添加完成后,点击 “Apply and Close” 按钮即可。
3) Visual Studio Code
Visual Studio Code,简称 VS Code,是微软公司开发的一款轻量级 IDE。和 PyCharm 一样,它也支持在 Windows、Linux 和 macOS 平台上运行。
VS Code:https://code.visualstudio.com/Download
VS Code 支持几乎所有主流开发语言的语法高亮、智能代码补全、自定义热键、括号匹配等功能,支持使用插件进行功能扩展,还针对网页开发和云端应用开发做了优化。
值得一提的是,使用 VS Code 编写 Python 代码,无需向其它编译器那样,通过创建项目来管理源代码文件,在 VS Code 中可以直接创建 Python 源代码文件。
VS Code 安装 Python 扩展的方法:
(1) 在 Welcome 界面中选择 "Python",下方会弹出一个对话框,选择 "OK",即可完成 Python 扩展的安装;
(2) 点击 “扩展” 按钮,并搜索 Python 扩展插件,找到合适的扩展(这里选择的是第一个,这是 Python 的调试工具),选择 “Install” 即可安装成功。
4)Sublime Text
Sublime Text 是一款流行的文本编辑器,它体积小、运行速度快、文本功能强大、可以运行在 Windows、Linux 和 Mac OS X 平台上。
在程序员眼里,Sublime Text 还是一款非常好用的代码编辑器,它支持运行 C/C++、Python、Java 等多种语言编写的程序。
Sublime Text: https://www.sublimetext.com/
4. 基础语法
Python 是一种解释型的脚本编程语言,这样的编程语言一般支持两种代码运行方式:
(1) 交互式编程: 在命令行窗口中直接输入代码,按下回车键就可以运行代码,并立即看到输出结果;执行完一行代码,你还可以继续输入下一行代码,再次回车并查看结果……整个过程就好像我们在和计算机对话,所以称为交互式编程。
(2) 编写源文件: 创建一个源文件,将所有代码放在源文件中,让解释器逐行读取并执行源文件中的代码,直到文件末尾,也就是批量执行代码。这是最常见的编程方式,也是我们要重点学习的。
1) Hello World 程序
(1) 交互式
Python 交互式编程环境,第一种方法是在命令行工具或者终端(Terminal)窗口中输入 python 命令,看到 >>> 提示符就可以开始输入代码,这里以 Windows 终端为例,如下所示:
D:\>python Python 3.8.1 (tags/v3.8.1:1b293b6, Dec 18 2019, 23:11:46) [MSC v.1916 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> print("Hello world!") Hello world! >>>
第二种方法是打开 Python 自带的 IDLE 工具,具体操作与第一种方法类似。
(2) 编写源文件
内容如下:
#!/usr/bin/python3 # 注释1 # 注释2 ''' 注释3 注释4 ''' """ 注释5 注释6 """ print("Hello world!")
保存为 D:\hello.py, 打开 cmd 命令窗口,进入 D:\
D:\> python hello.py
Hello World
在 Sublime Text 里运行:
使用 Sublime Text 打开 D:\hello.py 文件,在菜单栏中依次找到 “Tools -> Build System”,然后选择“Python”。然后按 "Ctrl+B" 组合键或者选择 Tools 菜单中的 “Build” 选项,就可以运行 Python 程序。运行结果为:
Hello World!
[Finished in 1.0s]
2) 编码
默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。 当然你也可以为源码文件指定不同的编码:
# -*- coding: cp-1252 -*-
上述定义允许在源文件中使用 Windows-1252 字符集中的字符编码,对应适合语言为保加利亚语、白罗斯语、马其顿语、俄语、塞尔维亚语。
3) 标识符
在 Python 3 中,可以用中文作为变量名,非 ASCII 标识符也是允许的了。标识符的命名规则:
(1) 第一个字符必须是字母表中字母或下划线 _ ;
(2) 标识符的其他的部分由字母、数字和下划线组成;
(3) 标识符对大小写敏感;
4) python 保留字
保留字即关键字,不能把它们用作任何标识符名称。Python 的标准库提供了一个 keyword 模块,可以输出当前版本的所有关键字,进入交互模式输入如下代码:
>>> import keyword
>>> keyword.kwlist
5) 注释
Python 单行注释以 # 开头,多行注释可以用多个 # 号,还有 ''' 和 """。
6) 行与缩进
Python 使用缩进来表示代码块,不需要使用大括号 {} 。
缩进的空格数是可变的,但是同一个代码块的语句必须包含相同的缩进空格数。实例如下:
if True:
print ("True")
else:
print ("False")
以下代码最后一行语句缩进数的空格数不一致,会导致运行错误:
if True:
print ("Answer")
print ("True")
else:
print ("Answer")
print ("False") # 缩进不一致,会导致运行错误
执行后会出现类似以下错误:
File "test.py", line 6
print ("False") # 缩进不一致,会导致运行错误
IndentationError: unindent does not match any outer indentation level
7) 多行语句
Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如:
total = item_one + \
item_two + \
item_three
在 [], {}, 或 () 中的多行语句,不需要使用反斜杠 \,例如:
total = ['item_one', 'item_two', 'item_three',
'item_four', 'item_five']
8) 数字 (Number) 类型
Python 中数字有四种类型:整数、布尔型、浮点数和复数。
int (整数), 如 1, 只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
bool (布尔), 如 True。
float (浮点数), 如 1.23、3E-2
complex (复数), 如 1 + 2j、 1.1 + 2.2j
9) 字符串 (String)
Python 中字符串 (String) 的特点如下:
(1) Python 中字符串是不可变类型,即无法直接修改字符串的某一位字符。修改字符串主要有 3 种方法:切片法、重新赋值和 replace 函数,切片法本质上就是重新赋值;
(2) 单引号 ' 和双引号 " 使用完全相同,使用三引号 (''' 或 """) 可以指定一个多行字符串;
(3) 没有单独的字符类型,一个字符就是长度为 1 的字符串;
(4) 有两种索引方式,从左往右以 0 开始,从右往左以 -1 开始。字符串的截取格式:变量[头下标:尾下标:步长];
(5) 字符串可以用 + 运算符连接在一起,用 * 运算符重复。反斜杠 \ 可以用来转义,使用 r 可以让反斜杠不发生转义。 如 r"this is a line with \n" 则 \n 会显示,并不是换行;
(6) 按字面意义级联字符串,如 "this " "is " "string" 会被自动转换为 this is string;
示例:
#!/usr/bin/python3 word = '字符串' sentence = "这是一个句子。" paragraph = """这是一个段落, 可以由多行组成""" str='123456789' print(str) # 输出字符串 print(str[0:-1]) # 输出第一个到倒数第二个的所有字符 print(str[0]) # 输出字符串第一个字符 print(str[2:5]) # 输出从第三个开始到第五个的字符 print(str[2:]) # 输出从第三个开始后的所有字符 print(str[1:5:2]) # 输出从第二个开始到第五个且每隔一个的字符(步长为2) print(str * 2) # 输出字符串两次 print(str + '你好') # 连接字符串 print('------------------------------') print('hello\nworld') # 使用反斜杠(\)+n转义特殊字符 print(r'hello\nworld') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
10) 空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是 Python 语法的一部分。书写时不插入空行,Python 解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
注:空行也是程序代码的一部分。
11) 用户输入
执行下面的程序在按回车键后就会等待用户输入:
#!/usr/bin/python3
input("\n\n按下 enter 键后退出。")
以上代码中 ,\n\n 在结果输出前会输出两个新的空行。一旦用户按下 enter 键时,程序将退出
12) 同一行多条语句
Python 可以在同一行中使用多条语句,语句之间使用分号 ; 分割,以下是一个简单的实例:
#!/usr/bin/python3
import sys; x = 'test'; sys.stdout.write(x + '\n')
13) 多个语句构成代码组
缩进相同的一组语句构成一个代码块,我们称之代码组。
if、while、def 和 class 这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
将首行及后面的代码组称为一个子句 (clause)。
示例:
if condition : 语句 elif condition : 语句 else : 语句
14) print 输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""。
#!/usr/bin/python3 x="a" y="b" # 换行输出 print( x ) print( y ) print('---------') # 不换行输出 print( x, end=" " ) print( y, end=" " ) print()
本系列文章资料参考来源:
1. http://c.biancheng.net/python/
2. https://www.runoob.com/python3/python3-tutorial.html
3. https://www.python.org/