【数据分析】第二章 Python基础
本章的学习目标
在本章中,我们将建立一个对Python世界的整体性认识。具体来说,我们将学习:
-
了解Python语言的基本情况和独特特点。 帮助你掌握Python的核心竞争力。
-
理解Python解释器是什么以及如何开始编写你的第一行Python代码。 为你的编程之路打下基础。
-
学习如何使用IPython和IPython Notebook等更现代、更高级的交互式工具进行编程。 提升你的编程效率和体验。
2.1 Python—— 编程语言
首先,让我们来认识一下Python这门编程语言本身。
Python是由Guido van Rossum(吉多·范·罗苏姆)于1991年发明的,它起源于ABC语言。Python的特点可以用以下几个关键词来概括:
-
解释型 (Interpreted)
-
可移植 (Portable)
-
面向对象 (Object-Oriented)
-
交互式 (Interactive)
-
胶水语言 (Interfaced/Glue Language)
-
开源 (Open Source)
-
便于理解和使用 (Easy to Understand and Use)
下面,我们逐一详细了解这些特点:
-
解释型:
-
Python是一种解释型语言,它采用一种“伪编译”的方法。这意味着,你编写完Python程序后,需要一个“解释器”才能运行它。
-
要解释并运行你的源代码,你的计算机上必须安装有Python解释器程序。
-
与C、C++和Java等需要将整个程序编译成机器码才能运行的语言不同,Python程序不需要预先进行完整的编译步骤。解释器会逐行读取并执行你的代码。
-
-
可移植性:
-
使用解释器读取和运行代码的最大优势就是Python具有极高的可移植性。
-
这意味着,只要在任何现有系统(如Linux、Windows和Mac)上安装了相应版本的Python解释器,你的Python代码无需修改就能在这些系统上运行。
-
正是因为这个特性,许多小型设备,包括树莓派(Raspberry Pi)和其他微处理器,都选择Python作为其编程语言。
-
-
面向对象:
-
Python是一种面向对象的语言。你可以通过定义“类(Class)”来表示“对象(Object)”,并实现“继承关系(Inheritance)”。
-
与C++和Java不同的是,Python中没有明确的“构造函数”或“析构函数”概念。但你可以通过特定的结构来管理异常。
-
值得一提的是,Python的语言结构非常灵活。即使是面向对象能实现的效果,你也可以通过函数式编程(Functional Programming)、**向量式编程(Vectorized Programming)**等其他编程范式来达成。
-
-
交互式:
-
Python是一种交互式编程语言。由于Python通过解释器执行代码,它的使用环境可以展现出截然不同的特性。
-
你可以像编写C++或Java那样,一次性编写大量代码后运行。
-
或者,你也可以在命令行中输入一行命令,立即得到执行结果,然后根据结果决定下一行代码怎么写。这种逐行执行、即时反馈的模式具有高度的交互性。
-
这种交互性使得Python非常适合进行计算,类似于Matlab。Python之所以能在科学计算领域取得成功,与此特点密切相关。
-
-
胶水语言:
-
Python的一大优点是可以用作“胶水语言”,将C/C++等其他编程语言粘合起来。
-
这个特性巧妙地弥补了Python执行速度相对较慢的缺点——这可能是Python唯一可能被诟病的性能问题。
-
作为一种动态性极高的编程语言,有时执行Python程序所需的时间可能是用其他语言编写并编译后的静态程序的100倍。因此,为了解决这类性能瓶颈,我们可以在Python语言中无缝地调用和使用那些已经用其他语言编译好的高效代码。
-
-
开源:
-
Python是一门开源编程语言。Python语言的参考实现——CPython是完全免费、开源的。
-
此外,Python的每一个模块和库也都是开源的,你可以在网上找到它们的源代码。
-
每月,庞大的开发者社区都会为Python带来诸多改进,持续丰富Python的库,并提升它们的性能。
-
CPython项目由成立于2001年的非营利机构——**Python软件基金会(Python Software Foundation, PSF)**管理。该基金会的宗旨是宣传、保护和推动Python编程语言的发展。
-
-
便于理解和使用:
-
这可能是Python最为重要的一个特点,因为它直接影响到开发者,尤其是新手的第一感受。
-
Python代码非常直观,阅读起来很容易,往往会引发用户由衷的赞叹(比如那句经典的:“人生苦短,我用Python”)。
-
久而久之,Python就成为了大多数编程新手的首选语言。
-
然而,“简单”并不意味着它的应用范围窄。相反,Python被广泛应用于各个计算领域。
-
此外,与C++、Java和Fortran等其他编程语言相比,Python处理各种任务时更加简单,远没有其他语言那么复杂。
-
2.2 Python——解释器
上一节我们提到,Python是一种解释型语言,它的运行离不开解释器。
每次你在命令行中输入python
命令,Python解释器就会启动,你将看到一个命令提示符>>>
。Python解释器程序的核心任务就是读取并解释你输入到提示符后面的代码。
解释器既可以一次只接收一条单独的命令,也可以接收一个完整的Python代码文件。无论哪种情况,解释器的处理机制都是相同的。
解释器的工作流程:
每次你按下回车键之后,解释器会启动一个过程:
-
单词化 (Tokenization): 解释器开始以“单词”为单位逐一扫描代码(一行或整个文件的所有代码)。这些“单词”实际上是一个个文本片段。
-
构建逻辑结构: 解释器将这些单词片段组织成一个表示程序逻辑结构的树状结构(你可以想象成一个语法树)。
-
生成字节码: 随后,这些代码片段(或树状结构)将会被转化为字节码(通常以
.pyc
或.pyo
文件的形式存在)。 -
虚拟机执行: 最后,生成的字节码会交由**Python虚拟机(PVM)**执行。
至此,一个Python解释过程就完成了。
图2-1 Python解释器解释代码的过程
Python解释器的种类:
Python的标准解释器被称作CPython,因为它完全是用C语言编写的。除了CPython,还有一些用其他语言编写的解释器:
-
Jython: 用Java语言开发的解释器。
-
IronPython: 用C#开发的解释器(因此目前只适用于Windows系统)。
-
PyPy: 完全用Python自身开发的解释器。
下面我们对其中几个重要的解释器做更详细的介绍。
2.2.1 Cython
Cython项目旨在开发一个能将Python代码转换为等价C代码的编译器。转换后的C代码随后在Cython环境中执行。这种编译机制使得在Python代码中嵌入能够提升效率的C代码成为可能。
你可以将Cython视为一门新的编程语言,它的发明实现了两种编程语言(Python和C)的融合。网上有大量的相关文档可供查阅,建议大家访问http://docs.cython.org了解更多信息。
2.2.2 Jython
与Cython相对,Jython是完全用Java语言开发和编译的Python解释器。它由Jim Hugunin于1997年开发(官网:http://www.jython.org)。
Jython是用Java语言实现的Python编程语言。更进一步来说,它具有以下特点:Python的扩展和包可以用Java类而不是Python模块来实现。这使得Python程序能够无缝地与Java生态系统集成。
2.2.3 PyPy
PyPy解释器是一种即时(Just-In-Time, JIT)编译器。它的特点是在程序运行时直接将Python代码转化为机器码。这样做是为了显著提升Python代码的执行速度。
然而,为了实现JIT编译的高效性,PyPy目前只支持所有Python命令中的一小部分子集,这个子集被称为RPython。关于PyPy的更多信息,请访问其官方网站:http://pypy.org。
2.4 安装 Python
要开始使用Python开发程序,你首先需要在你的操作