认识大蟒:Python 快速入门 | 周末送书

那年仲夏 提交于 2020-08-06 23:25:40

什么是大蟒(Python)

Python(英语发音 /ˈpaiθən/)本意是大蟒,在计算机领域通常特指一种面向对象、解释型的计 算机程序设计语言,是一种功能强大的通用型语言,具有近二十年的发展历史,成熟且稳定。它包含一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。Python 的语法非常简洁和清晰,与其他计算机程序设计语言最大的不同在于,它采用缩进来定义语句块。Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质,使它在很多领域都是一种理想的脚本语言。

Python 支持命令式编程、面向对象程序设计、函数式编程、面向切面编程、泛型编程等多种编 程方式。与 Scheme、Ruby、Perl、Tcl 等动态语言一样,Python 具备垃圾自动回收功能,能够自动 管理内存。Python 经常被用作脚本语言来处理系统管理任务和 Web 编程,当然它也非常适合完成各种高阶任务。Python 虚拟机本身几乎可以在所有的操作系统中运行。使用诸如 py2exe、PyPy、 PyInstaller 之类的工具,可以将 Python 源代码转换成可以脱离 Python 解释器执行的程序。

Python 目前由 Python 软件基金会管理。由于 Python 语言的相关技术正在飞速发展,用户数量也随之迅速增长。

Python是位“年轻的老同志”

Python 语言起源于 1989 年末,当时 CWI(荷兰国家数学与计算机科学研究中心)的研究员 Guido van Rossum 需要一种高级脚本编程语言,为其研究小组的 Amoeba 分布式操作系统执行管理 任务。为创建新语言,他从高级数学语言 ABC(ALL BASIC CODE)中汲取了大量语法,并从系 统编程语言 Modula-3 中借鉴了错误处理机制。他把这种新的语言命名为 Python(大蟒),Python 来源于 BBC 当时正在热播的喜剧连续剧 Monty Python’s Flying Circus ,他希望这个新的叫作 Python 的语言能符合他的理想:创造一种处于 C 和 Shell 之间,且功能全面、易学易用、可拓展的语言。

1991 年,第一个 Python 编译器诞生了。它是用 C 语言实现的,能够调用 C 语言的库文件。从一出生,Python 就具有类、函数、异常处理、包含表和词典在内的核心数据类型,以及以模块为基 础的拓展系统。

Python 语法大多来自 C 语言,却又受到 ABC 语言的强烈影响。一方面,ABC 语言的一些语法规定直到今天还有争议,如强制缩进。不过,这些语法规定让 Python 更容易阅读。另一方面, Python 聪明地选择了服从一些惯例,特别是 C 语言的惯例,如回归等号赋值。Guido 认为,基于常识确立的内容,没有必要过度纠结。

Python 从一开始就特别在意可拓展性,它可以在多个层次上拓展。从高层可以直接引入 .py 文件,在底层可以引用 C 语言的库。Python 程序员可以快速地使用 Python 写 .py 文件作为拓展模块。但 将性能作为考虑的重要因素时,Python 程序员可以深入底层写 C 程序,并将其编译为 .so 文件引入 Python 中使用。这就像使用钢结构建房一样,先规定好大的框架,然后由程序员在此框架下相当自由地进行拓展或更改。

Python 的核心开发者和使用者最开始只有 Guido 和他的同事,后来才逐渐扩展到团队外。Python 早期通过邮件列表来进行交流和开发,用户将改动发给 Guido,由他来决定是否将这些新特 性添加到 Python 中,因为 Guido 拥有至高无上的决策权,因此他被称为“终身的仁慈独裁者”。随着社区的发展壮大,Python 的开发逐渐转为开源的方式,遵循 GPL(GNU General Public License)协议并通过一套 PEP 文档审核流程来合作开发。从此,Python 的开发工作由社区大部分人分担,但 Guido 作为核心开发者,仍决定着 Python 的发展方向。

以下是 Python 版本发展过程中的重要时间点。

  • 1989 年圣诞节,Guido von Rossum 开始写 Python 语言编译器。

  • 1991 年 2 月,第一个 Python 编译器(同时也是解释器)诞生,它是用 C 语言实现的(后面又出现了用 Java 和 C# 实现的版本— Jython 和 IronPython,以及 PyPy、Brython、Pyston 等其他实现),可以调用 C 语言的库函数。在最早的版本中,Python 已经提供了对“类”“函数”“异常 处理”等构造块的支持,同时提供了“列表”“字典”等核心数据类型,另外还支持以模块为基础的扩展系统。

  • 1994 年 1 月,Python 1.0 正式发布。

  • 2000 年 10 月 16 日,Python 2.0 发布,增加了垃圾回收功能,并且支持 Unicode。与此同时,Python 的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。

  • 2004 年 11 月 30 日,Python 2.4 发布,是 Python 2.x 的经典实用版本。2005 年,Python 中流行的开发框架 Django 发布。

  • 2008 年 12 月 3 日,Python 3.0 发布,此版本不完全兼容之前的 Python 代码,不过很多 新特性后来也被移植到旧的 Python 2.6/2.7 版本中,直到现在还有公司在项目和运维中使用 Python 2.x 版本的代码。

  • 2008 年 10 月,Python 2.6 发布。随后,增加了许多兼容 Python 3 的语法,和后来发布的 Python 2.7 成为 Python 2.x 的过渡版本。

  • 2010 年 7 月,Python 2.7 发布。同年,Python 中流行的 Flask 框架发布,该框架一经发布 便以简单、自定义的特性迅速“蹿红”,现在已与 Django 共同成为 Python 语言中最受欢迎的两大 Web 框架。

  • 2014 年 4 月,Guido 宣布 Python 2.7 的技术支持时间延长到 2020 年,且不会再有 Python 2.8 了。

  • 2016 年 12 月,Python 3.6 发布。

  • 2018 年 12 月,Python 3.7.2RC1 发布,这是截至本文写作时 Python 3.x 分支的最新版本。

截至 2019 年 6 月,Python 在 TIOBE 语言排行榜上跃居第三名,且还有继续上升的趋势,如下图所示。

截至 2019 年 6 月的 TIOBE 语言排行榜

Python语言有什么特点

Python 语言主要有以下特点:

  • 简单:Python 是一种代表简单主义思想的语言,阅读一个良好的 Python 程序就像是在读 英语一样。Python 的这种伪代码本质是其最大的优点,使用户能够专注于解决问题而不是语言本身。

  • 易学:Python 有极其简单的语法,非常容易入门。

  • 免费、开源:用户可以自由地发布它的复制版本、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。

  • 高层语言:使用 Python 语言编写程序时,无须考虑如何管理程序使用的内存等底层细节。

  • 可移植:Python 的开源本质使它被移植到了许多平台上。如果 Python 程序没有使用依赖于系统的特性,那么程序无须修改就可以在下列任何平台上运行。这些平台包括 Linux、Windows、 FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、 QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、Pocket PC、 Symbian。

  • 解释性:编译型语言(如 C 或 C++)源程序从源文件(即 C 或 C++ 语言)转换到二进 制代码(即 0 和 1)的过程通过编译器和不同的标记、选项完成。运行程序时,连接器把程序从硬 盘复制到内存中并运行。Python 程序不需要编译成二进制代码,而是直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器 语言并运行。因此,用户不再需要操心如何编译程序、如何确保连接与转载正确的库等细节,所有这一切让 Python 的操作更加简单。同时,由于只需要把 Python 程序复制到另一台计算机上即可使用,使 Python 程序更加易于移植。

温馨提示:编译型语言和解释型语言的优点和缺点:

  • 编译型语言的优点是,编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。而且编译型语言可以脱离语言环境独立运行。缺点是编译之后如果需要修改就要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,在不同的操作系统之间移植时就会有问题,需要根据运行的操作系 统环境编译不同的可执行文件。

  • 解释型语言的优点是,有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机。解释型语言十分灵活,修改代码时直接修改就可以快速部署,不用停机维护。缺点是每次运行的时候都要解释一遍,性能不如编译型语言。

  • 面向对象:Python 既支持面向过程的编程,也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与 C++ 和 Java 等其他语言相比,Python 用一种非常强大又简单的方式实现了面向对象的编程。

  • 可扩展:如果希望把一段关键代码运行得更快或者希望某些算法不公开,则可以使用 C 或 C++ 语言编写这部分程序,然后在 Python 程序中调用它们。

  • 可嵌入:可以把 Python 嵌入 C/C++ 程序,从而向用户提供脚本功能。

  • 丰富的库:Python 标准库很庞大,可以帮助处理包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV 文件、密码系统、GUI(图形用户界面)、Tk,以及其他与系统有关的操作。只要安装了 Python,所有这些 功能就都是可用的,这被称作 Python 的“功能齐全”理念。除了标准库,还有许多其他高质量的库,如 wxPython、Twisted、Python 图像库等。

Python语言的应用领域

Python 几乎可以说是无所不能。目前国内有豆瓣、搜狐、金山、盛大、网易、百度、阿里巴巴、新浪等,国外有 Google、NASA(美国国家航空航天局)、YouTube、Facebook、红帽、Instagram 等企业都在云基础设施、DevOps、网络爬虫、数据分析挖掘、机器学习等领域广泛地应用 Python 语言。

Python 语言在以下领域得到了广泛应用:

  • 系统编程:提供各类常用 API,能方便地进行系统维护和管理。

  • 图形处理:有 PIL、Tkinter 等图形库支持,能方便地进行图形处理。

  • 数学处理:NumPy 扩展提供大量与标准数学库的接口;SciPy 是一款易于使用、专为科学和工程设计的 Python 工具包,这两者是将 Python 用于数学和科学计算时常用的扩展库。

  • 文本处理:Python 提供的 re 模块支持正则表达式,还提供 SGML、XML 分析模块。

  • 数据库编程:使用遵循 Python DB-API(数据库应用程序编程接口)规范的模块与 Microsoft SQL Server、Oracle、Sybase、DB2、MySQL 等数据库通信。Python 自带一个 Gadfly 模块,能提供一个完整的 SQL 环境。

  • 网络编程:提供丰富的模块支持 Sockets 编程,能快速地开发分布式应用程序。

  • Web 应用:支持最新的 HTML5 和 XML 技术,可以实现各类网站和 Web 应用。Python 有大量优秀的 Web 开发框架,并且在不断迭代,如 Django、Flask、Tornado 等。

  • 云计算:Python 是云计算领域最有名的语言,典型应用如 OpenStack 主要是使用 Python 开发的,各大云计算厂商也在其相关产品中大量使用 Python 语言。

  • 人工智能:基于大数据分析和深度学习而发展出来的人工智能,本质上已经无法离开 Python 的支持了。目前全球优秀的人工智能学习框架,如 Google 的 TensorFlow 、Facebook 的 PyTorch 及开源社区的神经网络库 Keras 等,均使用 Python 实现。微软的 CNTK(认知工具包)完 全支持 Python,且微软的 Visual Studio Code 已经将 Python 作为第一级语言进行支持。

  • 金融领域:在金融分析、量化交易、金融工程等领域,Python 被广泛应用,其重要性逐年提高。

  • 多媒体应用:Python 的 PyOpenGL 模块封装了 OpenGL 应用程序编程接口,能进行二维和三维图像处理。此外,PyGame 模块可用于编写游戏软件。

随着越来越多的人在学习、工作和生活中使用 Python 语言,Python 的应用领域也越来越广泛。

总结

Python 是一种面向对象、解释型的计算机程序设计语言,它有多种发行版本,源程序可以跨平 台运行。Python 采用缩进来定义语句块,具有类、函数、异常处理、包含表和词典在内的核心数据类型及以模块为基础的拓展系统。

Python 具有简单、易学、免费、开源、面向对象、可移植、可扩展、可嵌入等特点,在系统编程和维护、图形处理、数学处理和科学计算、数据库编程、Web 应用、网络编程、云计算、人工智能、金融、多媒体等领域均得到广泛应用。

福利时间

本文摘自于《Python 数据分析与可视化从入门到精通》,经出版方授权发布。本次联合北京大学出版社为大家带来7本书作为福利。在文末留言中写下学习Python的体会与心得,截止6月9日12点前,评论点赞数前7名的读者将获取图书1本。

基于Kubernetes的DevOps实战培训

基于Kubernetes的DevOps实战培训将于2020年6月19日在上海开课,3天时间带你系统掌握Kubernetes,学习效果不好可以继续学习。本次培训包括:容器特性、镜像、网络;Kubernetes架构、核心组件、基本功能;Kubernetes设计理念、架构设计、基本功能、常用对象、设计原则;Kubernetes的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!