码迷,mamicode.com
首页 > 编程语言 > 详细

python介绍

时间:2015-06-09 20:18:48      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

python简介 

Python(英国发音:/?pa?θ?n/ 美国发音:/?pa?θɑ?n/),是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用縮进来定义语句块。

与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理内存使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的自由软件,目前由Python软件基金会管理。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面程序设计、泛型编程多种编程范式。

python历史 

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。

1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是一个蒙提·派森的飞行马戏团的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并取得了非常好的效果,完美结合了C和其他一些语言。

就这样,Python在吉多手中诞生了。实际上,第一个实现是在Mac机上。可以说,Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。

目前吉多仍然是Python的主要开发者,决定整个Python语言的发展方向。Python社区经常称呼他是仁慈的独裁者。

Python 2.0于2000年10月16日发布,增加了实现完整的垃圾回收,并且支持Unicode。同时,整个开发过程更加透明,社区对开发进度的影响逐渐扩大。Python 3.0于2008年12月3日发布,此版不完全兼容之前的Python源代码。不过,很多新特性后来也被移植到旧的Python 2.6/2.7版本。

Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符,因此Python也支持泛型设计。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。有两个标准库(functools, itertools)提供了Haskell和Standard ML中久经考验的函数式程序设计工具。

虽然Python可能被粗略地分类为“脚本语言”(script language),但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrent,Google也广泛地使用它。Python的支持者较喜欢称它为一种高级动态编程语言,原因是“脚本语言”泛指仅作简单程序设计任务的语言,如shell script、VBScript等只能处理简单任务的编程语言,并不能与Python相提并论。

Python本身被设计为可扩充的。并非所有的特性和功能都集成到语言核心。Python提供了丰富的API和工具,以便程序员能够轻松地使用C语言、C++、Cython来编写扩充模块。Python编译器本身也可以被集成到其它需要脚本语言的程序内。因此,很多人还把Python作为一种“胶水语言”(glue language)使用。使用Python将其他语言编写的程序进行集成和封装。在Google内部的很多项目,例如Google Engine使用C++编写性能要求极高的部分,然后用Python或Java/Go调用相应的模块。《Python技术手册》的作者马特利(Alex Martelli)说:“这很难讲,不过,2004年,Python已在Google内部使用,Google召募许多Python高手,但在这之前就已决定使用Python。他们的目的是尽量使用Python,在不得已时改用C++;在操控硬件的场合使用C++,在快速开发时候使用Python。”


python的设计哲学与定位 

Python的设计哲学是“优雅”、“明确”、“简单”。因此其对手Perl语言中“总是有多种方法来做同一件事”的理念在Python开发者中通常是难以忍受的。Python开发者的哲学是“用一种方法,最好是只有一种方法来做一件事”。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确没有或者很少有歧义的语法。由于这种设计观念的差异,Python源代码通常被认为比Perl具备更好的可读性,并且能够支撑大规模的软件开发。这些准则被称为Python格言。在Python解释器内运行import this可以获得完整的列表。

Python开发人员尽量避开不成熟或者不重要的优化。一些针对非重要部位的加快运行速度的补丁通常不会被合并到Python内。所以很多人[谁?]认为Python很慢。不过,根据二八定律,大多数程序对速度要求不高。在某些对运行速度要求很高的情况,Python设计师倾向于使用JIT技术,或者用使用C/C++语言改写这部分程序。目前可用的JIT技术是PyPy。

实际上python很多标准模块,比如socket等是c实现的,效率通常比一般开发用c语言的实现要高。另外python中的ctypes和cpython可以达到c语言类似的效率。pypy在科学计算等相关方面效率可以接近C语言,但是在其他方面效率最多和java差不多,远不及C。

python的哲学基本上符合了伟大的世界历史名人老子的思想。


python的使用范围 

Web程序:


Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。使用Python语言编写的Gunicorn作为Web服务器,也能够运行Python语言编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的沟通。一些Web框架,如Django、Pyramid、TurboGears、web2py、Zope、Flask等,可以让程序员轻松地开发和管理复杂的Web程序。 
Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络蠕虫。第三方库Twisted支持异步在线编写程序和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。另有gevent这个流行的第三方库,同样能够支持高性能高并发的网络开发。

GUI开发:


Python本身包含的Tkinter库能够支持简单的GUI开发。但是越来越多的Python程序员选择wxPython或者PyQt来开发跨平台的桌面软件。使用它们开发的桌面软件运行速度快,与用户的桌面环境相契合。通过PyInstaller还能将程序发布为独立的安装程序包。与C++相比较,使用Python开发桌面软件通常更快更容易。

操作系统:


在很多作业系统里,Python是标准的系统组件。大多数Linux发布版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端机下直接运行Python。有一些Linux发布版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器、Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用作业系统功能的库。通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它Windows API。使用IronPython,Python程序能够直接调用.Net Framework。一般说来,Python编写的系统管理脚本在可读性、性能、源代码重用度、扩展性几方面都优于普通的shell脚本。在树莓派等相关硬件的系统中,python是核心语言。

自动化测试和黑客:


由于python的库相当丰富,开发容易。python在构建原型,自动化测试和黑客领域几乎No.1。

胶水语言:


python是各种语言交互的最佳语言。python本身有c,java,c#的实现,可以直接调用对应语言的相关功能。对于主流的语言,python都可以良好的交互。

其他


NumPySciPy、Matplotlib可以让Python程序员编写科学计算程序。有些公司会使用Scons代替make构建C++程序。

很多游戏使用C++编写图形显示等高性能模块,而使用Python或者Lua编写游戏的逻辑、服务器。相较于Python,Lua的功能更简单、体积更小;而Python则支持更多的特性和数据类型。很多游戏,如EVE Online使用Python来处理游戏中繁多的逻辑。

YouTube、Google、Facebook、Yahoo!、NASA都在内部大量地使用Python。OLPC的作业系统Sugar项目的大多数软件都是使用Python编写。

语言地位:(更新2015.06)


根据编程语言流行度排名:http://pypl.github.io/PYPL.html。 python目前位于第3名。

根据tiobe http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 的排名,python位于第6名,脚本语言的第1名。并两次获得tiobe的年度最佳语言奖。

python的实际地位可能位于2者的平均值,位于3-6名之间,因为python简单易学,在欧洲一些国家小学就会教python。在大陆,python因为中文资料相对匮乏,使用者偏少,但是也在快速发展中


如何选择python第三方模块 

1,http://stackoverflow.com/ 是选择模块的首选。在里面搜索python相关内容,一般会有python模块的比较。

2,pypi( https://pypi.python.org/pypi )是选择python模块最重要的依据。

pypi上面汇集了python的多数模块。比如 https://pypi.python.org/pypi/pexpect/3.0 是pexpect模块的介绍。 20553 downloads in the last month 表明上个月总共被下载了20553次。如果模块只在pypi上面提供下载,且月下载量不足1000,一般是用户很少,通常不推荐使用(用户很少的专用领域除外)。

3,linux的包管理提供了丰富的高质量的python模块,可以尝试使用。

比如在centos中

# yum search pexpect Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile

  • base: mirror01.idc.hinet.net

  • extras: ftp.stu.edu.tw

  • updates: mirror01.idc.hinet.net

============================================================================ N/S Matched: pexpect ============================================================================= pexpect.noarch : Pure Python Expect-like module

Name and summary matches only, use "search all" for everything.

4,pythonxy 封装很多优秀的windows上的python模块,安装方便,推荐。

介绍地址: http://automationtesting.sinaapp.com/blog/python_pythonxy_2.7.5.2

5,系统系统的提炼: 比如GAE, SAE, BAE等都集成了一些python的第3方模块,SAE的参见: http://python.sinaapp.com/doc/runtime.html



python介绍

标签:

原文地址:http://my.oschina.net/u/1433482/blog/464719

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!