Python 编程简介

1.1 Python 编程简介

1.1.1 Python 历史

Python (发音:[‘paɪθɑn] )是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年设计,并于1991年公开发行第一个发行版。

1982年,Guido 从阿姆斯特丹大学(University of Amsterdam)获得了数学和计算机硕士学位。然而,尽管他算得上是一位数学家,但他更加享受计算机带来的乐趣。用他的话说,尽管拥有数学和计算机双料资质,他总趋向于做计算机相关的工作,并热衷于做任何和编程相关的活儿。

1989年,为了打发圣诞节假期,Guido 开始写 Python 语言的编译/解释器。Python 的名字来自 Guido 所挚爱的电视剧 Monty Python’s Flying Circus (BBC 1960-1970 年代播放的室内情景幽默剧,以当时的英国生活为素材)。他希望这个新的叫做 Python 的语言,能实现他的理念(一种 C 语言和 shell 脚本之间、功能全面、易学易用、可扩展的语言)。Guido 作为一个语言设计爱好者,已经有过设计语言的(虽然不是很成功)的尝试。这一次,也不过是一次纯粹的 hacking 行为。(再次说明多给程序员放假的重要性!) 1991年,第一个 Python 编译器(同时也是解释器)诞生。它是用 C 语言实现的,并能够调用 C 库(.so文件)。

然而,时过境迁,Python 从 2000 年发布的 2.0 版本,到 2010 年的 2.7 版本,再到如今的 3.x 版本,Python 在各行各业的应用越来越广泛了。无论在自动化运维、Web 领域、数据挖掘与分析,还是机器学习与人工智能,甚至是教育行业都大放异彩。正如它的 slogan:人生苦短,我用 Python。

我觉得在互联网时代,不管你从事什么行业和岗位,都应该学一下 Python,是不是? 

1.1.2 Python 简介

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

  • Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。类似于 PHP 和 Perl 语言。
  • Python 是交互式语言:这意味着,您可以在一个 Python 提示符,直接互动执行写你的程序。
  • Python 是面向对象语言:这意味着 Python 支持面向对象的风格或代码封装在对象的编程技术。
  • Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 www 浏览器再到游戏。

1.1.3 Python 的特点

  1. 易于学习:Python 有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  2. 易于阅读:Python 代码定义的更清晰。
  3. 易于维护:Python 的成功在于它的源代码是相当容易维护的。
  4. 一个广泛的标准库:Python 的最大的优势之一是丰富的库,跨平台的,在 UNIX,Windows 和 Macintosh 兼容很好。
  5. 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  6. 可移植:基于其开放源代码的特性,Python 已经被移植(也就是使其工作)到许多平台。
  7. 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用 C 或 C++ 完成那部分程序,然后从你的 Python 程序中调用。
  8. 数据库:Python 提供所有主要的商业数据库的接口。
  9. GUI编程:Python 支持 GUI 可以创建和移植到许多系统调用。
  10. 可嵌入:你可以将 Python 嵌入到 C/C++ 程序,让你的程序的用户获得”脚本化”的能力。

跨平台特性

Python 的解释型语言特性决定了它天生是跨平台的。Python 的解释器有很多,使用最广泛的依然是 C 语言实现的 CPython。除此之外,还有 Java 实现的 Jython 和 .Net 实现的 IronPython 等等。

需要注意的是,虽然 Python 是跨平台的,但是 Python 的一些包却不是跨平台的。比如 GUI 模块,可能依赖于 SDL、GTK、Qt、Java,甚至是 Windows 环境的,这时候就需要根据不同的平台做调整。

1.1.4 Python 的应用

虽然 Python 是一种通用语言,可用于编写任何类型的程序,但它最常用于编写下述应用程序:

  • 脚本:这些简短的程序自动执行常见的管理任务,如在系统中新增用户、将文件上传到网站、在不使用浏览器的情况下下载网页等。
  • 网站开发:作为快速创建动态网站的工具,DjangoBottleZope 等众多 Python 项目深受开发人员的欢迎。例如,深受欢迎的新闻网站 <www.reddit.com> 就是使用 Python 开发的。
  • 文本处理:Python 在字符串和文本文件处理方面提供了强大的支持,包括正则表达式和 Unicode。
  • 科学计算:网上有很多卓越的 Python 科学计算库,提供了用于统计、数学计算和绘图的函数。
  • 教育:鉴于 Python 简洁实用,越来越多的学校将其作为第一门编程教学语言。

当然,Python 并非对任何项目来说都是最佳选择,其速度通常比 C/C++ 等编译型语言要慢,因此开发操作系统时不会使用 Python。然而,需要最大限度地减少程序员花在项目上的时间时,Python 通常是最佳选择。

Bruce Eckel 说:”Life is short, you need Python

Python is a good programming language. It’s readable, object, open source, loaded with tons of functions, extensible, scalable, interfacable with other languages, multiplatform (Dos, Windows, Macintosh, OS/2, Linux, Solaris…). It’s easy, fast and fun to learn. You can hack fully-functionnal programs rapidly. There are even RAD environments to construct complex graphical user interfaces (like Delphi or VB). On the other hand, it’s not as fast as compiled C.

You can freely download Python and its documentation at http://www.python.org. You will find plenty of very interesting links at http://www.python-eggs.org/links.html (including links to french sites).

1.1.5 Python 版本演进

  • Python 1.0 – January 1994 增加了 lambda, map, filter and reduce.
  • 1999年 Python的web框架之祖——Zope 1发布。
  • Python 2.0 – 2000年10月16日发布,加入了内存回收机制,构成了现在 Python 语言框架的基础。
  • Python 2.4 – 2004年11月30日发布,同年目前最流行的 Web 框架 Django 诞生。
  • Python 2.5 – 2006年09月19日发布。
  • Python 2.6 – 2008年10月01日发布。
  • Python 2.7 – 2010年07月03日发布。
  • Python 3.0 – 2008年12月03 日发布。
  • Python 3.1 – 2009年06月27日发布。用 C 语言实现 io 模块,新增 OrderedDict 类。
  • Python 3.2 – 2011年02月20日发布。新增 argparse、html 等模块,标准库进行了大量改进。
  • Python 3.3 – 2012年09月29日发布,新增 yield from 语法。
  • Python 3.4 – 2014年03月16日发布,集成 pip 工具,新增 enum、pathlib、statistics、selectors 等模块。
  • Python 3.5 – 2015年09月13日发布,为协程新增 async 和 await 语句,增加 ”异步迭代器“,新增矩阵乘法运算符 @。
  • Python 3.6 – 2016年12月23日发布,在 f"" 修饰的字符串里直接使用变量,新增 ”异步生成式“,新增 Variable Annotations 用于静态分析代码,更简便地自定义类的创建。
  • Python 3.7 – 2018年06月15日发布,新增内置函数 breakpoint(),新增 UTF-8 模式。

每一个版本都有大量的更新,更新详情请查看每个版本的 Python 文档中的 ”What’s New In Python x.x“

选择 Python2 还是 Python3

  • Python2.7 是 2.x 系列的最后一个版本,已经停止开发,不再增加新功能。2020年终止支持。所有的最新的标准库的更新改进,只会在 3.x 的版本里出现。Guido 决定清理 Python2.x ,并且不再兼容旧版本。
  • 最大的一个改变就是使用 Unicode 作为默认编码。Pyhton2.x 中直接写中文会报错,Python3 中可以直接写中文了。从开源项目看,支持 Python3 的比例已经大大提高,知名的项目一般都支持 py2.7 和 py3+。
  • py3 比 py2 更规范统一、去掉了没必要的关键字 Python3.x 还在持续改进。
  • 所以我们还是推荐大家使用 Python3.x。

1.1.6 Python 程序开发流程

虽然对如何编写程序没有严格的规定,但大多数程序员都采用类似的流程。

  1. 确定程序要做什么,即明确需求。
  2. 编写源代码,使用合适的编辑器编写 Python 代码,扩展名是 .py。这一步通常最有趣也最具挑战性,要求你创造性地解决问题。
  3. 使用 Python 解释器将源代码转换为目标代码。Python 将目标代码存储在 .pyc 文件中。
  4. 执行程序。对于 Python 来说,通常紧接着第2步自动完成这一步。实际上,Python 程序员很少直接与目标代码(.pyc文件)交互。
  5. 检查程序的输出。如果发现错误,回到第2步并尽力修复错误,这个过程也称为调试。开发庞大、复杂的程序时,可能大部分时间都用在调试上,因此经验丰富的程序员设计程序时,会尽力采用可最大限度减少调试时间的方式。

这是一个循环往复的过程:编写代码 -> 测试 -> 修复错误 -> 再测试 … 直到程序正确运行。

1.1.7 Python 程序如何工作

我们经常将 Python 程序中的语句称为源代码,并将程序文件称为源代码文件。根据约定,所有 Python 源代码文件都使用扩展名 .py。这让人和程序一眼就能明白文件包含 Python 源代码。

当运行 .py 文件时,Python 会自动创建相应的 .pyc 文件,如下图所示。

Python 由3个主要部分组成:

  • 运行语句的解释器
  • 将 .py 文件转换为 .pyc 文件的编译器
  • 运行 .pyc 文件的虚拟机

.pyc 文件包含目标代码(编译后的代码)。目标代码基本上是一种 Python 专用的语言,以计算机能够高效运行的方式表示 Python 源代码。这种代码并不是供人类阅读的,因此在大多数情况下你都应对 .pyc 文件置之不理。

Python 程序是使用名为虚拟机的特殊软件运行的。这个软件模拟计算机,是专为运行在 Python 上而设计的,这让很多 .pyc 文件无需做任何修改就能在不同的计算机系统上运行。

你几乎不用关心 .pyc 文件。Python 在需要时会自动创建它们,并在你修改了相应的 .py 文件时自动更新它们。千万不要删除、重命名或修改 .pyc 文件!

Leave a Reply