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

python简介

时间:2015-03-18 20:39:42      阅读:226      评论:0      收藏:0      [点我收藏+]

标签:python

【历史】

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

就这样,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)提供了与HaskellStandard ML中类似的函数式程序设计工具。

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

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

【应用范围】

Web程序

Python经常被用于Web开发。比如,通过mod_wsgi模块,Apache可以运行用Python编写的Web程序。使用Python语言编写的Gunicorn作为Web服务器,也能够运行Python语言编写的Web程序。Python定义了WSGI标准应用接口来协调Http服务器与基于Python的Web程序之间的沟通。一些Web框架,如DjangoPyramidTurboGearsTornadoweb2pyZopeFlask等,可以让程序员轻松地开发和管理复杂的Web程序。

Python对于各种网络协议的支持很完善,因此经常被用于编写服务器软件、网络蠕虫。第三方库Twisted支持异步在线编写程序和多数标准的网络协议(包含客户端和服务器),并且提供了多种工具,被广泛用于编写高性能的服务器软件。另有gevent这个流行的第三方库,同样能够支持高性能高并发的网络开发。

GUI开发

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

操作系统

在很多操作系统里,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。

其他

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

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

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

【语句和控制流】

语句和控制流

  • if语句,当条件成立时运行语句块。经常与else, elif(相当于else if)配合使用。

  • for语句,遍列列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。

  • while语句,当条件为真时,循环运行语句块。

  • try语句。与except, finally, else配合使用处理在程序运行中出现的异常情况。

  • class语句。用于定义类型。

  • def语句。用于定义函数和类型的方法。

  • pass语句。表示此行为空,不运行任何操作。

  • assert语句。用于程序调适阶段时测试运行条件是否满足。

  • with语句。Python2.6以后定义的语法,在一个场景中运行语句块。比如,运行语句块前加锁,然后在语句块运行退出后释放锁。

  • yield语句。在迭代器函数内使用,用于返回一个元素。自从Python 2.5版本以后。这个语句变成一个运算符。

  • raise语句。抛出一个异常。

  • import语句。导入一个模块或包。常用写法:from module import name, import module as name, from module import name as anothername

【表达式】

表达式

Python的表达式写法与C/C++类似。只是在某些写法有所差别。

  • 主要的算术运算符与C/C++类似。+, -, *, /, //, **, ~, %分别表示加法或者取正、减法或者取负、乘法、除法、整除、乘方、取补、取模。>>, <<表示右移和左移。&, |, ^表示二进制的AND, OR, XOR运算。>, <, ==, !=, <=, >=用于比较两个表达式的值,分别表示大于、小于、等于、不等于、小于等于、大于等于。在这些运算符里面,~, |, ^, &, <<, >>必须应用于整数。

  • Python使用and, or, not表示逻辑运算。

  • is, is not用于比较两个变量是否是同一个对象。in, not in用于判断一个对象是否属于另外一个对象。

  • Python支持字典、集合、列表的推导式(dict comprehension, set comprehension, list comprehension)。

【标准库】

标准库

Python拥有一个强大的标准库[9]。Python语言的核心只包含数字、字符串、列表、字典、文件等常见类型和函数,而由Python标准库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等额外的功能。

Python标准库的主要功能有:

  • 文本处理,包含文本格式化、正则表达式匹配、文本差异计算与合并、Unicode支持,二进制数据处理等功能

  • 文件处理,包含文件操作、创建临时文件、文件压缩与归档、操作配置文件等功能

  • 操作系统功能,包含线程与进程支持、IO复用、日期与时间处理、调用系统函数、日志(logging)等功能

  • 网络通信,包含网络套接字,SSL加密通信、异步网络通信等功能

  • 网络协议,支持HTTP,FTP,SMTP,POP,IMAP,NNTP,XMLRPC等多种网络协议,并提供了编写网络服务器的框架

  • W3C格式支持,包含HTML,SGML,XML的处理。

  • 其它功能,包括国际化支持、数学运算、HASH、Tkinter等

Python社区提供了大量的第三方模块,使用方式与标准库类似。它们的功能覆盖科学计算、Web开发、数据库接口、图形系统多个领域。第三方模块可以使用Python或者C语言编写。SWIG,SIP常用于将C语言编写的程序库转化为Python模块。Boost C++ Libraries包含了一组库,Boost.Python,使得以Python或C++编写的程序能互相调用。Python常被用做其他语言与工具之间的“胶水”语言。

【web框架】

  • Django

  • 开源Web开发框架,它鼓励快速开发,并遵循MVC设计,开发周期短。

  • Flask

  • 轻量级的Web框架。

  • ActiveGrid

  • 企业级的Web2.0解决方案。

  • Karrigell

  • 简单的Web框架,自身包含了Web服务,py脚本引擎和纯python的数据库PyDBLite。

  • Tornado

  • 一个轻量级的Web框架,内置非阻塞式服务器,而且速度相当快

  • webpy

  • 一个小巧灵活的Web框架,虽然简单但是功能强大。

  • CherryPy

  • 基于Python的Web应用程序开发框架。

  • Pylons

  • 基于Python的一个极其高效和可靠的Web开发框架。

  • Zope

  • 开源的Web应用服务器。

  • TurboGears

  • 基于Python的MVC风格的Web应用程序框架。

  • Twisted

  • 流行的网络编程库,大型Web框架。

  • Quixote

  • Web开发框架。

【科学计算】

  • Matplotlib

  • 用Python实现的类matlab的第三方库,用以绘制一些高质量的数学二维图形。

  • SciPy

  • 基于Python的matlab实现,旨在实现matlab的所有功能。

  • NumPy

  • 基于Python的科学计算第三方库,提供了矩阵,线性代数,傅立叶变换等等的解决方案。

【其它】

  • BeautifulSoup

  • 基于Python的HTML/XML解析器,简单易用。

  • PIL

  • 基于Python的图像处理库,功能强大,对图形文件的格式支持广泛。

  • PyGame

  • 基于Python的多媒体开发和游戏软件开发模块。

  • Py2exe

  • 将python脚本转换为windows上可以独立运行的可执行程序。

【通用IDE/文本编辑器】

很多并非集成开发环境软件的文本编辑器,也对Python有不同程度的支持,并且加上专门为Python设计的编辑器插件也会有很高的可用性。

【实际应用】

Reddit - 社交分享网站

Dropbox - 文件分享服务

豆瓣网 - 图书、唱片、电影等文化产品的资料数据库网站

Django - 鼓励快速开发的Web应用框架

Pylons - Web应用框架

Zope - 应用服务器

Plone - 内容管理系统

TurboGears - 另一个Web应用快速开发框架

Twisted - Python的网络应用程序框架

Fabric - 用于管理成百上千台Linux主机的程序库

Python Wikipedia Robot Framework - MediaWiki的机器人程序

MoinMoinWiki - Python写成的Wiki程序

Trac - 使用Python编写的BUG管理系统

Mailman - 使用Python编写的邮件列表软件

Mezzanine - 基于Django编写的内容管理系统系统

flask - Python微Web框架

Webpy - Python微Web框架

Bottle - Python微Web框架

EVE - 网络游戏EVE大量使用Python进行开发

Blender - 使用Python作为建模工具与GUI语言的开源3D绘图软件

Inkscape - 一个开源的SVG矢量图形编辑器。

知乎 - 一个高质量的问答网站

果壳 - 一个泛科技主题网站

【外部链接】

python.org

pythontab.com

本文出自 “Hello_World” 博客,请务必保留此出处http://coward.blog.51cto.com/7599475/1621943

python简介

标签:python

原文地址:http://coward.blog.51cto.com/7599475/1621943

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