Python探索之旅 | 第一部分第一课:Python是什么?

691 阅读14分钟

作者 谢恩铭,公众号「程序员联盟」(微信号:coderhub)。 转载请注明出处。 原文:www.jianshu.com/p/2b63eb1c1…

《Python探索之旅》全系列

内容简介


  1. 前言
  2. 什么是编程语言
  3. Python 是什么
  4. 总结
  5. 第一部分第二课预告

1. 前言


如果你决定学习这个系列课程,那我替你感到高兴!

因为我坚信:学一点 Python,以及围绕 Python 展开的 Web 开发、数据分析和人工智能,等等知识,对于程序员特别是这个时代的程序员来说是非常有好处的。 当然,我不是培训机构,我不会告诉你 Python 无所不能,不学 Python 就“错过一个亿”,等等。

最近几年,Python、人工智能、数据分析,等等占据了各大媒体的头版头条,可以算是最热门的几个词汇了。有很多人开始以人工智能创业,不少公司也以高薪聘请人工智能方面的专业人士。但是供需不平衡,目前人工智能方面的人才还很稀缺,专家更是寥寥。

之前我写过一篇文章:《最近迫切应学的编程语言》,说的就是 Python 语言。

现在,Python 在我国也越来越受重视,很多 Python 相关的职位薪资也不错,Python 还被编写进了中小学乃至幼儿园的编程书籍。Python 目前在编程语言排行榜(如 TIOBE 排行榜)中也位列前三。

这个系列教程首先会带大家学习 Python 这门有趣的语言,入门 Python 的面向对象编程。之后会学习 Python 可以做的不同事情,例如 Python 的著名库(Numpy,Pandas,Matplotlib,等等)。再到数据分析、Web 开发、人工智能的不同内容。会讲到 Python 的更多框架,例如 Django 和 Flask 等 Web 框架;人工智能的一些热门框架(比如 TensorFlow,PyTorch,等等),再用这些框架来开发一些有趣的应用。Python 在爬虫领域的使用也会涉及。

如果你已经有一定编程经验,学过编程语言,那学习这个系列课程会很轻松。如果你是还没入门编程的新人,那也无妨,因为这个系列教程就和我的大多数教程一样,都是适合零基础入门的。

Python 相对容易入门(当然,要精通也有难度),相比于 C 语言、C++ 和 Java 的入门,要轻松不少。

我之前写过一篇文章:《第一门编程语言选什么好》,里面讲了可以从 C 语言或 Python 入门编程。当然了,也有不少人推荐从 Java 入门,也是不错的选择。

如果你想学习 C语言,可以看我的很受欢迎的免费系列教程《C语言探索之旅》。我的其他系列教程请大家在我的账号中搜索~

在这第一课中,我会首先带大家了解一下 Python 这门语言。我们首先会解释一下什么是编程语言,然后我们会回顾一下 Python 的历史(Python 还是有点“年纪”的),并讲解 Python 可以做什么。

好了,坐好扶稳,我们要发车了~

2. 什么是编程语言


人类的交流

放心,我们不会讨论生物学和哲学的理论,所以请不要离开!

人类的交流是比较容易理解的。你目前正在看我的文章,可以看到很多中文字。

你可以看懂我在写什么,那是因为我们在语言和书写方面都遵守了某些约定。在中文(或英语、法语,乃至其他语言)中,有语法和拼写规则。 通过有意识地了解这些规则,并根据情况或多或少地善用这些规则,人与人就可以进行交流了。

然而,这些语法和拼写规则,也是很容易规避的:没有人可以说自己记住了某种人类语言的所用语法和拼写的规则。而且,也很少有人特别在意。 毕竟,即使你犯了错误,与你交流的人也可以理解你。

如果我们看到的一篇文章里有几个错别字,并不会妨碍我们理解文章的意思。如果有老外用中文和我们交流,即使他们的中文语法不是很标准,发音有点失准,也不妨碍我们理解彼此。

人与电脑的交流,和人与人之间的交流是不一样的。是的,电脑也可以交流。

你的电脑也会交流


是的,你的计算机(computer,也被称为“电脑”)会与你交流,并且你也会与之交流。

虽然,你的计算机应该不会告诉你“我饿了”,“冬天很冷”,“你刚才播放的电影是部欢乐的喜剧”,等等。

但其实,你和计算机之间的交流也并没有什么特别神秘的东西。当你双击浏览器的应用图标时,它会被打开。当你点击浏览器应用的左上角或右上角的红叉时,浏览器就知道要被关闭了。

机器语言


我们人类交流最常用的还是语言(Language),比如我们中国人就用中文,国际上用得比较多的语言是英语,也有用西班牙语和法语的,等等。

实际上,你的电脑不管是跟你交流还是自己与自己“对话”,都是基于一门特别的语言:机器语言(Machine Language)。

你也许会说:“好吧,人说人话,机器说机器话。那什么是机器语言呢?”

计算机可以执行的基本操作是非常基础的,包括两个数字的加法,减法,乘法,除法,整数与否。 但是,这五项操作却是最复杂的仿真软件或超大型游戏的底层机制。

所有这些软件的工作方式基本相同:

  1. 用机器语言编写的一系列指令组成程序;
  2. 在程序的执行过程中,这些指令向计算机描述了它应该要做什么(计算机是很“憨”的,可不会猜测)。

一系列指令?这又是什么意思呢?

例如,如果你单击浏览器的右上角或左上角的红叉,就可以要求浏览器程序关闭。但是,就机器语言而言,仅此一项操作就需要大量机器语言的指令。

你可以想象,用机器语言(也就是二进制语言。二进制语言仅包含 0 和 1)与计算机(计算机只能理解二进制)交谈,既不丰富,也不是非常实用,在任何情况下都不是很有趣。

例如,1000100110111101101110001101011100110111101110101011001 也许可以表示“你好”(当然了,这只是假设。我并不知道这一长串二进制码表示什么)。简而言之,与计算机进行二进制聊天是非常累人的(至少对于我们人类来说)。

为此,我们发明了编程语言,来简化与计算机的通信。

编程语言


编程语言(Programming Language)是我们人类更容易理解的语言。编程语言和机器语言的机制是类似的,却更易于被人类理解。

但是,为了让机器能够理解,还是必须将编程语言写的程序先翻译成 0 和 1 的二进制语言(也就是机器语言)。如下图:

大体来说,程序员“只需要”用所选择的编程语言编写代码行,后面的步骤一般不需要特别操心,你选择的编程语言的某些软件和操作系统自会处理。

目前来说,还没有必要对这些比较复杂的机制进行更多的解释。如果你未能理解上面所说的词汇和所有的解释,对后续课程的学习也并不会有什么妨碍。但是我觉得给出一些与计算机进行通信的方式的细节是很有趣的。

3. Python 是什么


编程语言种类繁多,Python 也是一门编程语言。

Python 就相对比较接近人类的自然语言。比 Java,C语言和汇编语言,离机器语言更远:

这也是 Python 相对容易入门的一大原因。

Python 被称为“小白首选高级语言,老鸟必备第二语言”,是一种通用(general-purpose)语言,这意味着它可以用于构建几乎所有东西!

Python 非常适合用于 Web 后端开发、数据分析、人工智能和科学计算。许多开发人员还使用 Python 构建生产力工具,游戏和桌面应用程序。

例如:

  • Instagram 是用 Python 构建的。YouTube 也是。

  • Python 是 Google(谷歌)工程师使用的三种官方语言之一(另外两种是 Java 和 C++)。

  • Netflix 使用 Python 在服务器端支持其数据分析。

  • Dropbox 的桌面客户端使用了 Python。

  • 国内的知乎、豆瓣、果壳等网站最早是用 Python 写的。美团、字节跳动等公司,也大量使用了 Python。

对于数据科学(Data Science),由于有许多可用的库,Python 经常被用于数据操作和可视化。

Python 这门编程语言还算比较年轻,第一个版本是 1991 年发布的。相比于 1972 年发布的 C 语言,算是“小伙子”了。

也许有不少人认为 Java 比 Python “年纪更大”(主要因为在我们中国,Java 比 Python 更早普及。一开始 Python 也没有得到太多重视),其实 Python 比 Java 更早出现,Java 是 1995 年由著名的 Sun 公司(已被 Oracle 收购)发布的。

Python 的作者是荷兰人,叫 Guido van Rossum(吉多·范罗苏姆。外号“龟叔”)。见下图:

可以看到,Python 之父的发量还是很多的。

而最复杂的编程语言(之一。其实我并不太想加这个“之一”)的 C++ 语言的发明人 Bjarne Stroustrup(本贾尼·斯特劳斯特卢普)的发量就有点尴尬了,见下图:

所以说,“C++ 之难,难于上青天”,此话不假。

当然了,这是玩笑话。编程语言的发明人的发量并不能作为语言难易程度的衡量标准。

Python 诞生的小历史


1989 年,在一个寒冷的夜里,来自荷兰的开发者 Guido van Rossum 感到很无聊。他正在寻找一种在圣诞节打发时间的方法,因为他的公司在圣诞节期间不开门。

当人们正在准备圣诞节,布置圣诞树时,他却用自己的电脑(苹果 的 Mac 电脑)发明了一种语言(严格地说,是开始用 C语言来编写 Python 的编译器)。作为喜剧团体 Monty Python 的忠实拥护者,他将这门新的编程语言命名为 Python。这也是为什么 Python 开发人员大多“具有幽默感”(参看 Python 官网的 www.python.org/doc/humor “幽默”栏目)并乐于在他们的代码中放置一些小玩笑的原因。

2001 年,Python 的非营利组织 Python Software Foundation(Python 软件基金会) 成立了。

Python 的官网是 www.python.org

Python 在英语中是“巨蟒”的意思,因此 Python 的 logo 使用了“蠢萌”的大蟒蛇,尽管它的命名与蟒蛇并没有什么关系。

Python 可以做什么?


Python 是一种功能强大的语言,既易学又具有丰富的可能性。

一旦你将 Python 安装到计算机上,你便拥有了许多功能,因为这些功能是集成在这门语言中的。而且,我们之后会看到,扩展 Python 的现有功能也非常容易。因此,存在所谓的库(library)来帮助开发人员处理特定项目。例如,可以安装各种图形库来用 Python 开发图形界面。

具体来说,我们可以使用 Python 创建如下的东西:

  • 小型、非常简单的程序,通常称为脚本(script),在计算机上具有非常特定的任务。我们公司就用了不少 Python 的脚本,用于代码审查、编译之类的工作。

  • 完备的程序,例如游戏,办公套件,多媒体软件,电子邮件客户端,等。

  • 非常复杂的项目,例如软件组合(可以协同工作的几种软件的集合,主要在专业领域中使用)。

Python 和其庞大的库也给了我们实现很多任务的可能:

  • 创建图形界面;
  • 通过网络传播信息;
  • 与你的操作系统进行高级通信;
  • 等等。

当然了,你不可能一下子学会所有这些。但这门课程会让你掌握足够多的基础,以便之后你可以开发大型 Python 项目。

一门解释型的编程语言


Python 是一门解释型的编程语言,也就是说,你发送给它的指令在被读取时会被“转录”(解释)为机器语言。

另外,也有一些编程语言(例如 C语言和 C ++)被称为编译型语言,因为在执行它们之前,需要专门的软件负责将程序代码转换为机器语言,此步骤被称为“编译”(compilation)。每次更改代码后,都必须重新调用编译步骤。

解释型语言的优点是简单(在执行程序之前不会经过编译步骤)和跨平台性(如 Python 之类的语言在 Windows、Linux 或 macOS 等操作系统下都能很好地工作,而且你不必为了从一个操作系统转到另一个系统而进行任何代码更改)。

这并不意味着编译型语言不是跨平台的,但是你必须使用不同的编译器。并且从一个操作系统到另一个操作系统,某些指令是不兼容的,运行的结果会有所不同。

不过,事实证明,编译型语言比解释型语言要快得多(因为即时翻译程序会减慢执行速度)。尽管随着不断的改进,编译型语言和解释型语言的速度差异会越来越小。此外,你需要在操作系统上安装 Python(解释器),以便计算机可以理解你的代码。

不同版本的 Python


自 2001 年 Python Software Foundation 被创建以来,经年累月,Python 语言经历了一系列的版本改动。这些版本被称为 Python 2.x(例如,2.3,2.5,2.6,2.7)。

然而,2009 年 2 月 13 日,Python 的 3.0.1 版本发布。3.0.1 版本破坏了以往版本中普遍存在的向后兼容性(Backwards compatibility)。

一般来说,当程序员们开发一门编程语言的新版本时,总会避免删除或修改过多的旧功能,以便向后兼容(也就是以前用这门语言的旧版本编写的程序也可以运行在新版本上)。

自此,Python 2 和 Python 3 就有点“分道扬镳”了。Python 2 和 Python 3 的不兼容性也是以往 Python 被诟病的一大原因。

万幸的是,Python 2 版本在 2020 年 1 月 1 日已经正式停止官方更新了。

因此,我强烈建议你直接学习 Python 3 版本,不需要理会 Python 2 版本了。

在这个系列课程中,我们也会用最新稳定的 Python 3 版本。

4. 总结


  • Python 是一门解释型语言,和 C语言,C++ 等编译型语言是不同的。

  • 我们可以使用 Python 来创建几乎所有类型的程序,例如游戏、绘图、爬虫,等等。

  • Python 的一个强大之处是它的库(library)非常多,众多优秀的库大大增加了 Python 的可能性。

  • Python 是跨平台的,可以运行在几乎所有操作系统上,例如 Windows,Linux,macOS,Unix,等等。

5. 第一部分第二课预告


今天的课就到这里,一起加油吧!

下一课:Python探索之旅 | 第一部分第二课:安装Python和Python的常用开发软件


我是 谢恩铭,公众号「程序员联盟」(微信号:coderhub)运营者,慕课网精英讲师 Oscar 老师,终生学习者。 热爱生活,喜欢游泳,略懂烹饪。 人生格言:「向着标杆直跑」