Python 是一门优雅而健壮的编程语言,它继承了传统编译语言的强大性和通用性,同时也借鉴了脚本语言和解释语言的简单性和易用性。
一、Python 的历史
Python是由创始人贵铎·范·罗萨姆(Guido van Rossum)在阿姆斯特丹于1989年圣诞节期间,为了打发圣诞节的无趣,开发的一个新的解释型脚本语言。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是因为他是BBC当时正在热播的喜剧连续剧“Monty Python”的爱好者。
Guido van Rossum.jpgPython的第一个公开发行版发行于1991年,它是纯粹的自由软件, 源代码和解释器(CPython)都遵循 GPL(GNU General Public License)协议。
二、Python 的设计思想
Python被设计成是 “符合大脑思维习惯” 的,采用极简主义的设计理念,加以统一规范的交互模式。这使得Python易于学习、理解和记忆。Python 开发者的哲学是 “用一种方法,最好是只有一种方法来做一件事”。
Python是完全面向对象的编程语言,函数、模块、数字、字符串等内置类型都是对象。它的类支持多态、操作符重载、和多重继承等高级OOP概念,并且Python特有的简洁的语法和类型使得OOP十分易于使用。当然OOP只是Python的一个选择而已,就像C++一样,Python既支持面向对象编程,也支持面向过程编程的模式。
Python是一种解释型语言,目前Python的标准实现方式是将源代码的语句编译(转换)为字节码格式,然后通过解释器将字节码解释出来。Python没有将代码编译成底层的二进制代码,所以相较于C和C++等编译型语言,Python的执行速度会慢一些。但是Python的解释型语言特性提高了开发者开发速度,同时使它拥有解释型语言易于编写和调试等优点。
Python本身被设计为可扩展的,并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C/C++语言来编写扩充模块。Python为我们提供了非常完善的基础代码库,覆盖了正则表达式、网络、多线程、GUI、数据库、等领域。除了内置的库外,Python还有大量的第三方库,供你直接使用。
Python编译器本身也可以被集成到其它需要脚本语言的程序内,因此,很多人还把Python作为一种“胶水语言”(glue language)使用,使用Python将其他语言编写的程序进行集成和封装。2004 年,Python 已在Google 内部使用。Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。他们的目的是 “Python where we can, C++ where we must",在操控硬件的场合使用 C++,在快速开发时候使用 Python。
注:我们在任意一个Python的交互解释器中输入:import this 命令,就可以看到Python的设计原则。EIBTI就是 “明了胜于晦涩” 的简写。
clipboard.png三、Python 的优点
1、软件质量高
Python秉承了简洁、清晰的语法,以及高度一致的编程模式。始终如一的设计风格,可以保证开发出相当规范的代码。
针对错误,Python 提供了“安全合理”的退出机制。Python支持异常处理,能有效捕获和处理程序运行时发生的错误,使你能够监控这些错误并进行处理。
Python代码能打包成模块和包,方便管理和发布,很适合团队协同开发。
2、开发速度快
Python致力于开发速度的最优化:简洁的语法、动态的类型、无需编译、丰富的库支持等特性使得程序员可以快速的进行项目开发。Python往往只要几十行代码就可以开发出需要几百行C代码的功能。
Python解析器能很方便地进行代码调试和测试,也可作为一个编程接口嵌入一个应用程序中。 这就使的在开发过程中可以直接进行调试,而避免了耗时而又麻烦的编译过程,大大提高了开发的速度和效率。
在Python 中,由于内存管理是由Python 解释器负责的,所以开发人员就可以从内存管理事务中解放出来,仅仅致力于开发计划中首要的应用程序设计。这使得Python编写的程序错误更少、更加健壮、开发周期更短。
3、功能强大
Python的功能足够强大,本身也足够强壮, 它还有许多面向其他系统的接口,所以完全可以使用 Python 开发整个系统的原型。
为了完成更多特定的任务,Python内置了许多预编码的库工具,从正则表达式到网络编程,再到数据库编程都支持。在web领域、数据分析领域等,Python还有强大的框架帮你快速开发你的服务。例如:Django、TruboGears、Pylons等。
4、易于扩展
Python易于扩展,(对于CPython)可以通过C或C++编写的模块进行功能扩展,使其能够成为一种灵活的黏合语言,可以脚本化处理其他系统和组件的行为。
5、跨平台
Python是跨平台的。在各种不同的操作系统上(Linux、windows、MacOS、Unix等)都可以看到Python 的身影。因为Python 是用C 写的,又由于C 的可移植性,使得Python 可以运行在任何带有ANSI C 编译器的平台上。尽管有一些针对不同平台开发的特有模块,但是在任何一个平台上用Python 开发的通用软件都可以稍事修改或者原封不动的在其他平台上运行。这种可移植性既适用于不同的架构,也适用于不同的操作系统。
四、Python 的缺点
第一个缺点就是运行速度慢。和C/C++程序相比Python的运行速度非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。不过,根据二八定律,大多数程序对速度要求不高。某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。Python开发速度带来的效益往往比执行速度带来的损失更为重要,尤其是在现代计算机高速的处理能力情况下。
第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码。这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码发布出去。要从机器码完整反推出C代码是不可能的。
五、Python 的开发方向和应用场景
Web网络开发:
Python提供丰富的模块支持sockets编程,多线程编程,能方便快速地开发网络服务程序。支持最新的XML技术,支持json语言,数据库编程,而且Python的ORM框架,使得操作数据库非常方便。
Python还有优秀的Django、Tornado、Flask等web开发框架,还用众多的开源插件的支持,足以适用各种不同的web开发需求。
自动化运维。
Python对操作系统服务的内置接口,使其成为编写可移植的维护操作系统的管理工具和部件的理想工具。Python程序可以搜索文件和目录树,可以运行其他程序,可以使用进程和线程并行处理。
网络爬虫。
在文本处理方面,python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。
图形处理。
有PIL、Tkinter等图形库支持,能方便进行图形处理。 多媒体应用 ,Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二和三维图像处理。PyGame模块可用于编写游戏软件
除此之外,Python还应用于游戏、人工智能、大数据分析、机器人等领域。
六、Python的种类
Cpython:
执行过程:程序----(c解释器)----(字节码)----(机器码)-----cpu
Python的官方版本,这是Python初始的以及维护得最好的实现,使用C编写。新的语言特性一般会最先在这里出现。CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。
Jyhton:
执行过程:程序----(java解释器)----(字节码)----(机器码)-----cpu
Python的Java实现,此实现可用作Java应用程序的脚本语言,或可用于使用Java类库创建应用程序,它也经常用于为Java库创建测试。Jython会将Python代码动态编译成Java字节码,然后在JVM上运行。
PyPy:
执行过程:程序----(字节码)----(机器码)-----cpu
完全用Python编写的Python实现。它支持在其他实现中没有找到的几个高级功能,如stackless支持和一个Just in Time编译器。PyPy将Python的源码翻编译成字节码再编译成机器码。
其他类别:Python for .NET、IronPython、RubyPython、Brython ...
七、Python版本
python有两个版本,python 2.X和python 3:
python 2.x的最后一个版本是python2.7(于2010年发布),官方将支持到2020年。
python 3.X的第一个版本python 3.0(于2008年发布)
python 3.X不兼容 Python 2.X版本,官方也有发布python2.6作为过渡到Python 3.0的版本,2.6之后的版本都为过渡版本。
为什么要开发 Python 3.X版本呢?因为 python发展了20多年,里面有很多重复的功能,重复的模块,很多代码也变得不那么简洁,所以Guido决定进行一次彻底的升级,原则是去繁从简,从而有了后续的 Python 3.X版本。
《Python基础手册》系列:
Python基础手册 1 —— Python语言介绍
Python基础手册 2 —— Python 环境搭建(Linux)
Python基础手册 3 —— Python解释器
Python基础手册 4 —— 文本结构
Python基础手册 5 —— 标识符和关键字
Python基础手册 6 —— 操作符
Python基础手册 7 —— 内建函数
Python基础手册 8 —— Python对象
Python基础手册 9 —— 数字类型
Python基础手册10 —— 序列(字符串)
Python基础手册11 —— 序列(元组&列表)
Python基础手册12 —— 序列(类型操作)
Python基础手册13 —— 映射(字典)
Python基础手册14 —— 集合
Python基础手册15 —— 解析
Python基础手册16 —— 文件
Python基础手册17 —— 简单语句
Python基础手册18 —— 复合语句(流程控制语句)
Python基础手册19 —— 迭代器
Python基础手册20 —— 生成器
Python基础手册21 —— 函数的定义
Python基础手册22 —— 函数的参数
Python基础手册23 —— 函数的调用
Python基础手册24 —— 函数中变量的作用域
Python基础手册25 —— 装饰器
Python基础手册26 —— 错误 & 异常
Python基础手册27 —— 模块
Python基础手册28 —— 模块的高级概念
Python基础手册29 —— 包
网友评论