1.1 快速了解Python

十分钟快速了解Python

Python是一门非常优秀的语言,于1989年由吉多·范罗苏姆(Guido van Rossum)创立,拥有语法简洁、易于学习、功能强大等多种优势与特点,所以非常受程序员的欢迎。目前Python在最流行的10种编程语言排行榜中排名第1。

1.1.1 Python的起源与背景

1989年圣诞节期间,荷兰人吉多·范罗苏姆打算开发一门新的语言作为ABC语言的继承,随后便以自己非常喜欢的一个喜剧团Monty Python的名字中的Python为这门新语言命名。就这样,在吉多·范罗苏姆的努力下,Python语言诞生了。从一开始,吉多·范罗苏姆在Python语言的设计中就特别在意易读性与可扩展性。比如强制缩进这方面的设计就参照了当时的ABC语言,非常有利于提升程序的易读性。

当然,强制缩进这方面的内容目前还存在着比较大的争议,有些人认为强制缩进让编写变得更加麻烦,而有些人认为强制缩进可以让代码更加整洁。笔者觉得强制缩进是利大于弊的。虽然在写程序的时候,如果不注意程序的缩进,会导致程序出现错误,稍微麻烦了一点,但是缩进可以让程序更加美观,在阅读程序的时候可以一目了然。而且,缩进也是有规律的,最大的规律就是同一层级的代码在同一个缩进幅度上。这样做可以让程序的层次结构变得非常分明,尤其在代码多的时候,如果层次分明,可以更方便开发与管理程序。同样,读者在写Python程序的时候,只需要把握住这一规律,就会发现强制缩进非但不麻烦,而且还会提升开发效率。

在可扩展性方面,Python语言做得也是相当不错的。比如可以将一些常用的功能写成.py文件,然后放到Python安装目录的Lib目录下,这样该文件就成了一个Python的模块,此时若想用对应的功能,直接导入对应的模块即可。比如对应的.py文件的文件名为a.py,在将该文件封装为模块之后,直接通过import a就可以导入该文件,然后就可以使用该文件中所实现的功能了。除此之外,也可以使用C语言去写一些程序文件,写好了之后只需要将对应的C语言文件编译为.so文件,随后就可以直接在Python中引入对应的.so文件并使用了。正因为Python语言在可扩展性方面做得非常好,所以使用Python来实现各种功能都非常适合,这让Python具备了强大的功能。

在1991年的时候,Python第一版正式发行。第一版Python就具备了核心数据类型、函数、模块、异常处理及面向对象等方面的内容。

在接下来的发展中,Python语言获得了很多Python用户的支持与改进。开始的时候,Python用户以邮件列表(maillist)的方式进行沟通和开发,不同的用户使用Python开发出一些功能或改进之后,会将这些改进及新的功能发送给吉多·范罗苏姆。如果吉多·范罗苏姆觉得这些改进或新的功能非常有用,则会将这些改进或新的功能添加到Python或者Python的标准库中。之前提到过,Python的可扩展性非常好,所以,当用户的改进或新的功能添加到Python之后,Python可以继续保留原有的功能,也可以很轻松地对接新的功能。

随后,Python用户越来越多,Python社区也越来越大,Python社区后来也拥有了自己的网站(python.org),之后Python的开发与改进方式也由原先通过邮件列表的方式逐渐向开源的方式转变。

目前,Python已经拥有了大量的模块,通过不同的模块,可以实现各式各样的功能。读者可以通过Python社区的PyPI查找别人开发的模块并使用。当然,用户开发或改进的某个新功能,也可以通过PyPI提交上去,供别的开发者使用。

Python发展到今天,已经深受广大程序开发者的喜爱,应用在各个行业上,比如常见的爬虫、数据挖掘、人工智能等领域,Python都有着极其广泛的应用。

如图1-1所示,2017年,Python在最流行的10种编程语言排行榜中排名第1,也在逐渐地影响着更多的程序员。

图1-1 2017年最流行的10种编程语言

1.1.2 Python的功能

由于Python的可扩展性非常好,所以Python可以实现的功能也非常多。

就目前来说,经常使用Python来处理的领域有简单脚本编程、Web系统开发、爬虫数据采集、数据分析与挖掘、自动化运维等。

除此之外,Python还可以实现很多其他的功能。例如游戏开发、黑客逆向编程、网络编程等方面,使用Python来实现也是非常适合的。

在使用Python开发程序时,尤其是在实现某个专业方向的功能时,通常会使用到Python的模块。一般来说,Python的自带模块(即标准库)就已经非常丰富了,但如果某个自带模块无法实现更深层次的功能,开发者还可以选择使用第三方模块进行开发。如果还无法满足需求,也可以自己开发一些程序封装成模块使用,这些都是很容易实现的。也正因为如此,使得Python能够适应多个专业领域的开发。当然,在初学Python的时候,并不需要大家对Python所有的标准库都非常熟悉,只需要关注与自己专业方向相关的标准库即可。例如,如果主要做网络爬虫,可以重点关注urllib(自带模块)、re(自带模块)、Scrapy(第三方模块),对于其他模块,可以有选择地掌握。总之,一切以需求为导向。

为了让大家能够更好地理解Python的功能,笔者将为大家展示一些自己用Python开发实现的项目案例。

图1-2所示是使用Python实现的乘法口诀表,可以使用循环自动地输出。

图1-2 使用Python实现的乘法口诀表

图1-3所示是使用Python实现的豆瓣自动登录网络爬虫,会自动登录豆瓣网(假如遇到验证码,会自动识别验证码再自动登录),然后爬取个人中心页面日志数据。

图1-3 豆瓣自动登录爬虫(具有验证码自动识别功能)

图1-4所示是使用Python实现的智能预测课程销量的一个程序,使用的是人工神经网络算法。当然,由于实验数据及时间有限,当前的loss值为0.3818,相对比较高,所以准确率不算太高,即此时有61.82%的概率是预测准确的,此时加多训练次数以及加大训练数据数量即可改善准确率。从图1-4中也可以看到,随着训练次数的增加,loss逐渐减小,即准确率逐渐提高。

图1-4 使用Python实现的预测课程销量的程序执行结果

除此之外,还能使用Python做很多有趣的事情。

当然,要想使用Python实现各种各样的功能,首先需要把Python基础打好,本书会为大家全面地呈现Python的基础知识。基础打好之后,方可继续研究深层次的内容。

1.1.3 Python的优势与特色

Python简介及特色

Python作为一门流行的编程语言,有着非常多的优势与特色。下面就来介绍一下Python基本的优势与特色。

1. Python的优势

Python语言有着三大显著的优势,即:

(1)简单易学。

(2)功能强大。

(3)支持面向对象。

首先,如果想入门Python,相对来说是非常容易的,因为Python的编程风格非常简洁。举个例子,想定义一个变量并赋值为19,然后输出该变量的值,如果使用C++进行编写,需要通过如下程序实现:

#include <iostream>
using namespace std;

int main() {
    int i=19;
    cout<<i;
    return 0;
}

而如果使用Python实现,以下程序即可:

i=19
print(i)

都是输出19。

从上面的例子可以看出,相对来说,Python的编程风格是非常简洁的,正因为如此,读者很快就能学会Python。

Python的语法如此简洁,是否意味着Python的功能不够强大呢?

答案当然是否定的。Python的功能非常强大,几乎是一门全能的语言,总结来说,Python可以应用在以下方面。

(1)系统编程。

(2)GUI编程。

(3)开发网络爬虫。

(4)Web开发。

(5)数据分析与挖掘。

(6)机器学习领域。

(7)游戏开发。

(8)自动化运维。

Python的第三个优势就是支持面向对象编程,这个优势可以让Python在开发大型项目的时候变得非常方便。

2. Python的特色

Python常见的一些特点如下。

(1)大小写严格区分。

(2)简单、易学、支持面向对象。

(3)开源。

(4)库非常丰富。

(5)跨平台使用。

(6)解释性语言。

(7)高级语言。

这些特点大家在后续的学习过程中会逐渐感受到,前两个特点不用过多阐述,接下来重点介绍一下后5个特点。

Python是开源的,所谓“开源”,简单理解就是开放源代码。正因为其是开源的,所以可以让更多的人传播和使用Python,并且能够更好地发现其中的Bug并修复,这大大促进了Python的发展。

Python的库是非常丰富的,所谓“库”,读者可以理解为是一系列Python功能的封装,比如要使用Python开发一个网络爬虫,那么就可以使用网络爬虫相关的库。首先导入urllib库,然后直接进行网络爬虫的编写,因在urllib库中封装了大量与网络爬虫相关的功能。再比如,需要使用Python实现一些与操作系统相关的功能,如运行某个shell命令,此时可以使用Python的os库进行实现,因为在os库中封装了大量与操作系统相关的功能。

接触Python后就会发现,正因为Python的库非常丰富,所以使用Python来实现各种各样的功能就变得非常方便了。

另外,跨平台使用也是Python的一大特点。比如,在Windows操作系统写好的Python程序,可以不加修改或者只进行少量修改,就能够在Linux系统、Mac系统及其他操作系统中运行。这一点对于程序开发来说是极为方便的。

此外,Python是一门解释性语言,同时也是一门高级语言,这是它的另外两大特点。

解释性语言区别于编译型语言,解释性语言是在程序运行的时候将程序翻译成机器语言,而编译型语言则需要在程序执行之前进行一个编译的过程,统一地将程序转换为机器语言,然后执行。按常规来说,解释性语言的执行速度一般会比编译型语言慢,但是,学到后面会发现,Python程序在执行的时候会生成一个跟程序对应的PYC格式的文件,这样可以大大提高程序运行的速度。关于PYC格式的文件,此处不需要深入理解,因为在后面会详细介绍到。

高级语言与低级语言不同,一般来说,与人类思维方式更接近的语言称为高级语言,而与机器的运行方式(二进制)更接近的语言称为低级语言。两种类型的语言各有优势,比如,使用高级语言编程,编写的速度自然会更快一些,而使用低级语言实现相同的功能,则相对慢一些。但是,在程序运行的时候,由于低级语言更接近于机器的习惯,而高级语言需要经过解释或编译的过程转换为机器语言,之后再交由机器执行,所以,高级语言的运行速度一般来说会比低级语言的运行速度慢。

这里为大家介绍了Python的三大优势与七大特点,当然,这些并不代表Python的所有优势与特点,其他的优势及特点大家可以在后续的学习中逐步领会。