Python从菜鸟到高手(1):初识Python

1 Python 简介

1.1 什么是 Python

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人吉多·范罗苏姆(Guido van Rossum)于 1989 年发明,第一个公开发行版发行于 1991 年。目前 Python 的最新发行版是 Python3.6。

Python 是纯粹的自由软件,源代码和解释器都遵循 GPL(GNU General Public License)协议。Python 语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。

Python 具有丰富和强大的库。它常被称为胶水语言,能够把用其他语言制作的各种模块(尤其是 C/C++)很轻松地集成在一起。常见的一种应用场景是,使用 Python 快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的编程语言改写,比如 3D 游戏中的图形渲染模块,性能要求特别高,就可以用 C/C++ 重写,然后封装为 Python 可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些库可能不提供跨平台的实现。

尽管 Python 源代码文件(.py)可以直接使用 python 命令执行,但实际上 Python 并不是直接解释 Python 源代码,而是先将 Python 源代码编译生成 Python Byte Code(Python 字节码,字节码文件的扩展名一般是.pyc),然后再由 Python Virtual Machine(Python 虚拟机,可以简称为 PVM)来执行 Python Byte Code。也就是说,这里说 Python 是一种解释型语言,指的是解释 Python Byte Code,而不是 Python 源代码。这种机制的基本思想跟 Java 和.NET 是一致的。

尽管 Python 也有自己的虚拟机,但 Python 的虚拟机与 Java 或.NET 的虚拟机不同的是,Python 的虚拟机是一种更高级的虚拟机。这里的高级并不是通常意义上的高级,不是说 Python 的虚拟机比 Java 或.NET 的功能更强大,而是说与 Java 或.NET 相比,Python 的虚拟机距离真实机器的距离更远。或者可以这么说,Python 的虚拟机是一种抽象层次更高的虚拟机。Python 语言程序代码的编译和运行过程如下图所示。
image

1.2 Python 的应用领域

Python 是一种跨平台编程语言,理论上,Python 可以运行在任何操作系统平台上。目前最常用的操作系统平台是 Windows、Mac OS X 和 Linux。毫无疑问,这 3 个平台都会成为 Python 的主战场。

Python 的简单易学、众多第三方程序库,以及运行速度快等特性让 Python 的应用领域异常广泛。Python 的应用领域主要有以下几个方面。

  • Linux/Unix 运维

  • 命令行程序开发

  • GUI 程序开发(PyQt 、Kivy 等)

  • Web 程序开发(Django 等框架)

  • 移动 App 开发(PyQt 、Kivy 等)

  • 服务端程序开发(基于 Socket 等协议)

  • 网络爬虫(为搜索引擎、深度学习等领域提供数据源)

  • 数据分析

  • 深度学习

  • 科学计算

    尽管这里没有列出 Python 的所有应用领域,但光这些列出的领域,就已经包含了绝大多数开发场景。用过 Mac OS X 或 Linux 的读者会发现,在这两个操作系统中,已经内置了 Python 解释器,也就是说,Python 程序可以在 Mac OS X 和 Linux 上直接运行。所以很多运维工程师习惯使用 Python 来完成很多自动化操作。而且 Python 在操作网络、文本方面尤为突出。Google 搜索引擎的第一个版本就是用 Python 写的。现在超级火热的深度学习也离不开 Python,而且 Python 已经成为了深度学习的第一语言。因此,从各个角度来看,无论是学生、程序员,还是数据分析师,或是科学家,都离不开 Python。Python 俨然已经成为了编程语言领域的世界语。

    1.3 如何学好 Python

    如何学好 Python 语言,是所有初学者需要共同面对的问题,其实每种编程语言的学习方法都大同小异。下面是给初学者的几点建议。

  • 大体了解一下 Python 是一种怎样的编程语言,以及主要的应用领域。说白了,就是要了解 Python 能做什么,擅长做什么。对 Python 语言有一个宏观的认识。

  • 搭建开发环境,不管三七二十一,先弄出一个 Hello World 再说(可以复制现有的代码)。这样会给自己带来继续学习下去的信心。我们可以设想,学了一个星期,如何连一行代码都写不出来,继续学下去的兴趣还会剩多少呢?

  • 不要深究设计模式,这些东西是给那些有多年经验的程序员准备的,而且设计模式也不是用来学的,更不是用来记的,是依靠自己的多年经验和实践得出来的。这就像学英语,只管说就好了,管他什么语法,说多了,英语自然就纯正了。所以在一开始写程序时,只管写就好了,让设计模式见鬼去吧!

  • 模仿书中的例子代码,一定要自己亲手写代码,当然,一开始为了看运行结果,可以将书中的例子直接复制过来,但一定要完全自己写一遍,代码可以与书中的例子不同,只要实现同样的功能即可。

  • 在编写代码的过程中,不需要对 Python 语言的语法死记硬背,如果某些语法实在记不住,就把这些语法写在卡片上,或干脆放到有道云笔记上,以便随时查看,写多了自然就记住了。

  • 初学者不需要大量阅读 Python 的书籍,也不需要在网上查阅过多的技术资料,因为在自己的功力还没有达到一定火候时,摄入太多的信息会分散自己的精力,可能会适得其反。用一句武林中的话说就是:走火入魔。因此,对于初学者来说, 应充分利用本书给出的代码多做练习,当学会了本书给出的各种知识和技巧后,就可以随心所欲地摄取任何自己想获得的知识了。

  • 读者应充分利用随书赠送的 Python 视频课程,这套视频课程是与本书同步的。书与视频的差别就是书只能给出一个结果,而视频不仅可以给出结果,还可以详细演示操作过程,这对于初学者尤其重要。

  • 在模仿书中例子编写代码的过程中,可能对有些代码没有理解透彻,这并不要紧,读者应仔细阅读本书的相关内容,以及利用随书赠送的 Python 视频课程反复观看,以便领悟其中的奥秘。如果实在领悟不了,也可以到极客起源 IT 问答社区(https://geekori.com )去提问,会有很多人回答你提出的问题。

  • 本书配有大量练习题,读者可以通过这些练习题更好地掌握书和视频中的知识点,而且这些练习题不是生硬地给出,而是通过“过关斩将”、“测能力”等形式给出(这些功能需要依托欧瑞科技旗下“极客题库”小程序实现)。读者可以通过这些功能以闯关的方式完成自己的学习任务,并对自己的知识点掌握情况了如指掌。

  • 经常总结是一个好习惯,这个习惯对于程序员来说尤其重要。读者可以经常把自己的学习心得,以及经常需要查阅的内容发布到博客(如 https://geekori.com )上,这样不仅可以提高自己的技术能力,还可以提高自己的语言表达能力。

  • 经常回答同行提出的技术问题也是一种提高技术能力的方式,而且更有效。如果你没有能力回答任何技术问题,或只能回答不到 10% 的技术问题,那么你还是个小白。如果能回答超过 30% 的技术问题,那么说明你已经至少达到了程序员的中级水平,如果这个比例是 50%,那么恭喜,你已经成为该领域的高手了。如果提高到 80%,会毫无悬念地成为该领域的专家。另外,欧瑞科技旗下的极客起源 IT 问答社区(https://geekori.com )包含了李宁老师大量学员和读者提出的各种问题,各位读者也可以试试自己到底属于哪个层次。另外,在 https://geekori.com 中提问、回答问题以及撰写博客,都会获得可观的积分,可以换取更多的学习资源。

  • 大量阅读源代码。如果前面的方法读者做的都很好,那么相信读者的技术水平已经有了一个质的飞跃,剩下来的工作就是更进一步地提高自己的技术能力。阅读各种开源项目的源代码是一个非常好的方式。另外,要注意,阅读源代码不是目的,目的是要理解这些源代码背后的原理,当然,最终的目的是自己可以实现一个类似的功能。读者可以到 https://github.com 获取各种类型的 Python 源代码。

2 搭建 Python 开发环境

2.1 安装官方的 Python 运行环境

不管用什么工具开发 Python 程序,都必须安装 Python 的运行环境。由于 Python 是跨平台的,所以在安装之前,先要确定在哪一个操作系统平台上安装,目前最常用的是 Windows、Mac OS X 和 Linux 三大平台。由于目前使用 Windows 的人数最多,所以本书主要以 Windows 为主介绍 Python 运行环境的搭建与程序的开发。

读者可以直接到 Python 的官网下载相应操作系统平台的 Python 安装包。

https://www.python.org/downloads

进入下载页面,浏览器会根据不同的操作系统显示不同的 Python 安装包下载链接。如果读者使用的是 Windows 平台,会显示如下图所示的 Python 下载页面。

image

如果读者使用的是 Mac OS X 平台,会显示如下图所示的 Python 下载页面。

image

不管是哪个操作系统平台的下载页面,都会出现“Download Python 3.6.2”和“Download Python 2.7.13”两个按钮(随着时间的推移,可能版本号略有不同)。由于本书使用 Python 3 讲解,所以点击“Download Python3.6.2”按钮即可。如果是 Windows 平台,下载的是 exe 安装程序,如果是 Mac OS X 平台,下载的是 pkg 文件,这是 Mac OS X 上的安装程序,直接安装即可。

现在主要来说说在 Windows 平台如何安装 Python 运行环境。首先运行下载的 exe 文件,会显示如下图所示的 Python 安装界面。建议读者选中界面下方的“Add Python 3.6 to PATH”复选框,这样安装程序就会自动将 Python 的路径加到 PATH 环境变量中。

image

在该界面中出现两个安装选项,“Install Now”和“Customize installation”,一般点击“Install Now”即可,点击该选项后,会开始安装 Python,下图是显示安装进度的界面,读者只需要耐心等待 Python 安装完即可。

image

安装完后,会出现下图所示的安装成功界面。

image

2.2 配置 PATH 环境变量

在安装完 Python 运行环境后,我们可以测试一下 Python 运行环境,不过如果在安装 Python 的过程中忘记了选中“Add Python 3.6 to PATH”复选框,那么默认情况下,Python 安装程序是不会将 Python 安装目录添加到 PATH 环境变量的。这样一来,我们就无法在 Windows 命令行工具中的任何目录执行 python 命令了,必须进入 Python 的安装目录才可以使用 python 命令。

image

完整目录

京东
当当

为了更方便地执行 python 命令,建议将 Python 安装目录添加到 PATH 环境变量中。在 Windows 平台配置 PATH 环境变量的步骤如下:

1. 回到 Windows 的桌面,鼠标右键“计算机”,在弹出菜单中单击 “属性”菜单项,会显示如下图所示的“系统”窗口。

image

点击“系统”窗口左侧的“高级系统设置”,会弹出如下图所示的“系统属性”窗口。

image

点击“系统属性”窗口下方的“环境变量 (N)...”按钮,会弹出如下图所示的“环境变量”窗口。

image

在“环境变量”窗口有两个列表,上面的列表是为 Windows 当前登录用户设置环境变量,在这里设置的环境变量只对当前登录用户有效。下面的列表是对所有用户设置的环境变量,也就是说这些变量对所有的用户都有效。读者在哪里设置 PATH 环境变量都可以,本书在上面的列表中设置了 PATH 环境变量。如果在列表中没有 PATH 环境变量,点击“新建 (N)...”按钮添加一个新的 PATH 环境变量。如果已经有了 PATH 环境变量,双击 PATH,就会弹出“编辑用户变量”对话框。

读者需要在“变量值 (V)”文本框中添加 Python 的安装目录,多个路径之间要用分号(;)分隔。那么我们怎么找到 Python 的安装路径呢?实际上,在 Python 安装界面的“Install Now”按钮下方就是 Python 的默认安装路径,这个路径可以修改,不过一般保持默认设置即可。如果仍然使用 Python 的默认安装路径,那么需要在 PATH 环境变量的最后添加如下的路径。

C:\Users\Administrator\AppData\Local\Programs\Python\Python36-32

我们可以进入该路径,就会看到如下图所示的目录内容。很显然,我们要使用的就是目录中的 python.exe 文件。

image

现在打开 Windows 命令行工具,执行 python --version 命令,如果输出 Python 3.6.2,说明 Python 安装成功了。

2.3 安装 Anaconda Python 开发环境

开发一个完整的 Python 应用,光使用 Python 本身提供的模块是远远不够的,因此,需要使用大量第三方的模块。在发布 Python 应用时安装这些第三方模块是一件令人头痛的事,不过有了 Anaconda,让这件事轻松不少。Anaconda 是一个集成的 Python 运行环境。除了包含 Python 本身的运行环境外,还集成了很多第三方模块,如本书后面要将的 numpy、pandas、flask 等模块都集成在了 Anaconda 中,也就是说,只要安装了 Anaconda,这些模块都不需要安装了。
  Anaconda 的安装相当简单,首先进入 Anaconda 的下载页面,地址如下:
https://www.anaconda.com/download

Anaconda 的下载页面也会根据用户当前使用的操作系统自动切换到相应的 Anaconda 安装包。Anaconda 是跨平台的,支持 Windows、Mac OS X 和 Linux。不管是哪个操作系统平台的安装包,下载直接安装即可。

Anaconda 的安装包分为 Python3.x 和 Python2.x 两个版本,由于目前 Python3.x 最新版是 Python3.6,而 Python2.x 最新版是 Python2.7,所以习惯上称这两个版本为 Python3.6 版和 Python2.7 版,由于本书使用的是 Python3.6,所以建议读者下载 Python3.6 版的 Anaconda。下载界面如下图所示。下载完后,直接安装即可,如果安装完后,如果未设置 Python 的 PATH 环境变量,可以按上一节的方式进行设置。

image

2.4 安装 PyCharm

PyCharm 是一个专门用于开发 Python 程序的 IDE,由 JetBrains 公司开发,这个公司开发出了很多非常流行的 IDE,例如,WebStorm、Intellj IDEA 等,其中 Android Studio(开发 Android App 的 IDE)就是基于 Intellj IDEA 社区版开发的。

PyCharm 有两个版本:社区版和专业版。社区版是免费的,但功能有限,不过使用 PyCharm 编写本书的案例足够了。

读者可以到下面的 PyCharm 官网下载 PyCharm 的安装文件。

https://www.jetbrains.com/pycharm

尽管 PyCharm 下载页面后,将页面垂直滚动条滑动到中下部,会看到如下图所示的 PyCharm 专业版和社区版的下载按钮。

image

PyCharm 下载页面会根据用户当前使用的操作系统自动切换到相应的安装文件,Windows 是 exe 文件,Mac OS X 是 dmg 文件,Linux 是 tar.gz 文件。读者只需要点击右侧的“DOWNLOAD”按钮即可下载相应操作系统平台的安装程序。

下载完 PyCharm 后即可运行 PyCharm,第 1 次运行 PyCharm,会显示如下图所示的欢迎界面。点击“Create New Project”按钮即可建立 Python 工程。

image

2.5 配置 PyCharm

现在点击 PyCharm 欢迎界面的“Create New Project”按钮会显示“New Project”窗口,这个窗口是用来创建 Python 工程的。在“Location“文本框中输入 Python 工程的名字,如果读者要选择不同的 Python 运行环境,可以点击“Project Interpreter”,会在“New Project”窗口下方显示如下图所示的 Python 运行环境选择界面。

image

如果读者已经配置好了 PyCharm 中的 Python 运行环境,从“Interpreter”列表中选择一个 Python 运行环境即可。如果读者还没有对 PyCharm 进行配置,需要点击“Interpreter”列表框右侧的按钮,然后在弹出菜单中点击“Add Local…”菜单项,会弹出如下图所示的“Add Local Python Interpreter”窗口。

image

选择左侧列表中的“Virtualenv Environment”,点击右侧“Interpreter”列表框右侧的省略号按钮,会弹出一个“Select Python Interpreter”窗口,如下图所示。在该窗口中选择 Anaconda 或其他 Python 解释器,然后点击“OK”按钮关闭该窗口。

image

接下来回到“New Project”窗口,在“Interpreter”列表中选择刚才指定的 Python 运行环境,最后点击“Create”按钮创建 Python 工程。一个空的 Python 工程如下图所示。

image

Python 源代码文件可以放在 Python 工程的任何位置,通常会将 Python 源代码文件放在 src 目录中,然后选择 src 目录,在右键菜单中点击“New”>“Python File”菜单项创建一个 Python 文件(这里是 Test.py),如下图所示。

image

第一次运行 Python 程序可以选择 Test.py 文件,然后在右键菜单中选择“Run ‘Test’”菜单项会运行 Test.py 脚本文件,以后再运行,可以直接点击 MyCharm 主界面右上角的绿色箭头按钮。现在为 Test.py 文件输入一行简单的代码,如 print('hello world'),然后运行 Test.py 脚本文件,会得到如下图所示的输出结果。如果读者按前面的步骤进行,并得到这个输出结果,就说明 PyCharm 已经安装成功了。

image

### 2.6 Python 中的 REPL 环境

Python 有如下 3 种运行方式。

  • 直接通过 python 命令运行
  • 在 Python IDE 中运行
  • 在 Python 的 REPL 环境中运行

本节将介绍如何在 REPL 环境中运行 Python 程序,这里的 REPL 是 Read-Eval-Print Loop 的缩写,是一个简单的交互式编程环境,也可以将 Python REPL 环境称为 Python 控制台。为了统一,本书后面的章节都称 Python REPL 为 Python 控制台。

读者只需要在 Windows 命令行工具中执行 python 命令,即可进入 REPL 环境。在命令提示符(>>>)后输入 print("hello world"),按回车键,就会在 REPL 环境中输出“hello world”,如下图所示。

image

如果在 Windows 下,按 Ctrl+Z 退出 REPL 环境,如果在 Mac OS X,按 Ctrl+D 退出 REPL 环境。

1.3 第一个 Python 程序

本节会编写我们的第一个 Python 程序。这个程序定义了两个整数类型的变量 n 和 m,并将两个变量相加,最后调用 print 函数输出这两个变量的和。

(1)读者可以使用任何一个文本编辑器、Eclipse 或 PyCharm 创建 demo.py 文件,并输入下面的 Python 代码。

n = 20
m = 30
print("n + m =",n + m)

建议读者使用 Eclipse 或 PyCharm 来创建 demo.dy 文件,因为这样做可以直接在 IDE 中执行 Python 程序,并不需要像命令行方式运行 Python 程序那样在文本编辑器和 Window 命令行工具之间来回切换。

(2)运行 Python 程序

如果读者想在 Windows 命令行工具中运行 demo1.py,可以在命令行工具中进入 demo1.py 所在的目录,然后执行下面的命令运行 demo1.py。

python demo1.py

在命令行工具中运行 demo1.py 的输出结果如下图所示。

image

1.4 调试 Python 程序

在开发复杂的 Python 程序时,如果出现 bug(也就是程序中出现的错误),就需要对程序进行调试,以便找出 bug 对应的代码行。调试程序的方法很多,例如,可以使用 print 函数在程序的不同位置输出相应的信息,以便缩小 bug 出现的范围。不过这种方法太原始了,现在普遍使用的方法是通过调试器一步步跟踪代码行,这种方式可以非常方便地找到 bug 所在的位置。

由于 PyDev 是 Eclipse 插件,所以调试 Python 程序可以使用与调试 Java 类似的方式(PyCharm 的调试方法类似)。Eclipse 提供了调试接口,后台调用了各种编程语言的调试器。在调试 Python 代码时会调用 Python 的调试器。

用 Python 调试器调试 Python 代码的步骤如下:

(1)设置断点

设置断点是调试程序的过程中必不可少的一步。Python 调试器每次遇到断点时会将当前线程挂起,也就是暂停当前程序的运行。

可以在 Python 编辑器中显示代码行号的位置双击添加或删除当前行的断点,或者在当前行号的位置鼠标右键单击,会显示如下图所示的弹出菜单。在菜单中单击“Add Breakpoint”菜单项,会在当前代码行添加断点。也可以单击“Disable Breakpoint”菜单项,禁用当前行的断点。如果当前行已经有断点了,菜单中会出现“Remove Breakpoint”菜单项,单击该菜单项,会删除当前行的断点。

image

添加断点后的 Python 编辑器如下图所示。其中第 2 行设置了一个断点。

image

(2)以调试方式运行 Python 程序

在 Eclipse 中运行分为两种方式:Release 和 Debug,也就是发行和调试。如果只是观察程序的执行效果,可以选择 Release 方式,如果要调试程序,就需要使用 Debug 方式。

Debug 按钮在 Eclipse 工具栏左侧,如图 1-54 所示(有一个小爬虫的按钮,在 Release 按钮的左侧)。

image

现在点击 Debug 按钮,就会运行 Python 程序,如果 Python 程序没有设置任何断点,Debug 和 Release 方式运行的效果是一样的,都会输出运行结果。不过用 Debug 方式运行程序,Eclipse 会进入 Debug 透视图(Perspective),这里的透视图就是 Eclipse 中将多个相关视图以一定位置和尺寸放到一起,便于开展工作。Debug 透视图则是将与调试相关的视图放到一起,便于调试。

如果 Python 程序中有断点,当程序执行到断点处,就会暂停程序,并且在断点行用绿色背景展示,如下图所示。

image

(3)观察调试信息

调试的主要目的是将程序中的数据展现出来,也就是说,调试调的就是程序中的数据。因此,通过 Python 调试器,可以用多种方式观察 Python 程序中数据的变化。例如,由于 n = 20 在 m = 30 前面,所以在 m = 30 处中断后,n = 20 肯定是已经执行了,所以可以将鼠标放到 n = 20 语句上,这时会在弹出窗口中显示变量 n 的数据类型和当前的值,如下图所示。

image

在右上角的 Variables 视图中也可以观察变量值的变化情况,如下图所示。

image

(4)跟踪调试程序

调试的另一个重要功能是可以一步步跟踪程序,也就是 step into(单独跳入)和 step over(单步跳过)。其中 step into 可以跟踪进函数内部,step over 并不会跟踪进函数内部。这两个功能可以通过点击左上侧的两个按钮实现,如下图所示。

image

现在点击“step over”按钮,会发现 Python 代码区域 m = 30 代码行执行了,并且绿色背景跑到下一行了,如下图所示。

image

1.5 实战与练习

  1. 尝试修改 1.3 节的例子,使程序输出 n * m 的值。

  2. 尝试编写 Python 程序,分别用“*、+、-、/”四个在四则运算符将两行字符串包围起来,并 Eclipse 的 Console 视图中输出如下图所示的结果。

image

Python 技能树,Get 新技能

enter image description here

扫描二维码关注“极客起源”公众号,技术文章、视频课程应有尽有

enter image description here

欢迎关注“Python 开发者基地”公众号

enter image description here