热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

什么是大蟒(Python)Python(英语发音ˈpaiθən)本意是大蟒,在计算机领域通常特指一种面向对象、

什么是大蟒(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的数据库、运行时、网络、插件已经落地经验;微服务架构、组件、监控方案等,点击下方图片或者阅读原文链接查看详情。


推荐阅读
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 提升Python编程效率的十点建议
    本文介绍了提升Python编程效率的十点建议,包括不使用分号、选择合适的代码编辑器、遵循Python代码规范等。这些建议可以帮助开发者节省时间,提高编程效率。同时,还提供了相关参考链接供读者深入学习。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 加密世界下一个主流叙事领域:L2、跨链桥、GameFi等
    本文介绍了加密世界下一个主流叙事的七个潜力领域,包括L2、跨链桥、GameFi等。L2作为以太坊的二层解决方案,在过去一年取得了巨大成功,跨链桥和互操作性是多链Web3中最重要的因素。去中心化的数据存储领域也具有巨大潜力,未来云存储市场有望达到1500亿美元。DAO和社交代币将成为购买和控制现实世界资产的重要方式,而GameFi作为数字资产在高收入游戏中的应用有望推动数字资产走向主流。衍生品市场也在不断发展壮大。 ... [详细]
author-avatar
先进的山楂4l4_519
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有