python简要介绍
2012-02-15 16:13 Python爱好者 阅读(1103) 评论(1) 编辑 收藏 举报最新版生日小助手网址:http://birthdayhelper.weebly.com/
资料来源很多,主要是百度百科,网上这样的内容很普遍,主要是想整理一下帮助大家对python有个感性的认识。
Python是一种面向对象、直译式计算机程序设计语言,由Guido van Rossum于 1989年底发明, 第一个公开发行版发行于1991年。Python语法简捷而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模 块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中有特别要 求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。
Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由 Tim Peters写的python格言(称为The Zen of Python)里面表述为:There should be one-- and preferably only one --obvious way to do it. 这正好和Perl语言(另一种功能类似的高级动态语言) 的中心思想TMTOWTDI(There's More Than One Way To Do It)完全相反。Python的作者有意的设计限制性很强的语法,使得不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。
Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。这种机制的基本思想跟Java,.NET是一致的。然而,Python Virtual Machine与Java或.NET的Virtual Machine不同的是,Python的Virtual Machine是一种更高级的Virtual Machine。这里的高级并不是通常意义上的高级,不是说Python的Virtual Machine比Java或.NET的功能更强大,而是说和Java 或.NET相比,Python的Virtual Machine距离真实机器的距离更远。或者可以这么说,Python的Virtual Machine是一种抽象层次更高的Virtual Machine。基于C的Python编译出的字节码文件,通常是.pyc格式。
Python的优点:
简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。 易学:Python极其容易上手,因为Python有极其简单的语法。 免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。 高层语言:用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、PocketPC、Symbian以及Google基于linux开发的android平台。(这
也是我为什么想使用源码发布“生日小助手”的理由,如果用软件把源码打包成exe,因为windows有多个版本,所以打包出来的程序可能在XP上运行成
功,到win7上就无法运行。64位系统和32位系统的差异也会使程序无法运行。但是python解释器的版本是多种多样的,你可以选择对应你的系统的
python解释器安装在自己电脑上,这样,只要有.py或.pyw的源码,就可以直接双击.py或.pyw源码文件运行程序,还不容易出现兼容性问题。
如果随着程序的功能的增加,运行速度越来越慢,我可以把很多地方用C++重写来增加速度。这样,速度和可移植性都可以得到很大程度的解决。并且,我也尝试
了用C++直接调用python程序脚本,然后编译成exe,之后试图让这个exe程序,在没有python程序脚本的环境下运行,结果失败,也就是说,
就算用这样的方式,也需要有python解释器和被调用的python脚本代码。尽管不确定自己的试验一定严谨,但是现在实在是没有时间和精力一直研究这
个问题了。我的最初目标是让用户不安装任何多余的东西就可以直接运行我的程序,从而方便用户的使用。但是经过多天的努力,还是没有成功,如果未来我有充足
的时间和精力研究这个问题,再写一篇新的东东吧。现在只能采用源码发布了,大家可以针对自己的操作系统安装python解释器(下载地址:http://www.python.org/)(我的网盘也提供了下载链接,见http://blog.sina.com.cn/s/blog_64ca6cfb0100wpos.html),解释器很小,不会影响你的电脑的速度。Linux系统一般默认有python解释器,这一大段的解释主要针对Windows用户。) 解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。 运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。 在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。 面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。 可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。 可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。 丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、 CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作 Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。 规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。
Python的缺点:
1. 运行速度相对慢,不利于实时应用。(对此,我感觉关键性代码用C++重写还是有一定的帮助的。)
2. 构架选择太多,没有100%经典的架构,不利于大规模开发。(对此,我感觉架构仅仅是一种工具,也不必都按照一个模式来,那样不但程序员的工作枯燥,而且不利于提高软件的创新度。当然只是个人看法。)
Python的应用领域:
系统编程:提供API,能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。 图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。 数学处理:NumPy扩展提供大量与许多标准数学库的接口。 文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。 数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,Mysql、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的 SQL环境。 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。 Web编程:应用的开发语言,支持最新的XML技术。 多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。
下面是一些简单的总结:
高层次的内建数据结构
动态类型
动态绑定
面向对象
跨平台免费分发
无版权纷争
可移植性好
可扩展性好
简洁易学
容易阅读
支持模块和包
强制代码缩进
标准库众多
通过动态库装入其他语言写的程序
必要时可访问系统最底层
可以进行系统编程
适合开发图形用户接口
提供网络编程模块
提供所有主流数据库接口
适合数值计算和科学计算
##与Perl相比,基本特性不同。Perl更适于处理文本和报表,有强大的系统级支持,Python更
适于在面向对象状态下工作,并且代码简洁,可维护性强。
##与Java相比,编程思想不同。Java先由编译器编译成字节码,而Python直接由解释器完成编译,Java的执行速度大于Python。Python简单易用,更适合于在结构化框架中实现快速开发。
##与JavaScript相比,设计目标不同。JavaScript不是真正的脚本语言,没有真正的跨平台兼容性和安全性。Python具有更强的扩展性。
##与Tcl相比,Python的数据结构处理能力更强,更适合大规模编程。
##与Rebol相比,应用对象不同。Rebol重点支持传输和交流信息,与电子邮件、Usenet、Web和FTP服务器直接会话,功能很集中。Python则应用范围更为广泛。
##与Visual
Basic相比,VB是Microsoft提供的开发环境,并且更适合数据库接口开发,应用领域也具有局限性。Python则支持多种数据库系统,并可以将一个系统的数据翻译并转移到另一个系统,跨平台性更好。
##与Awk相比,Awk更适合总结和汇报大量数据,并且易于编写系统快速脚本,正则表达式语法也比Python先进,但缺乏文件管理能力。
##与Ruby相比,Python不强制使用面向对象。事实上,Python支持面向过程程序设计、面向对象程序设计和函数型程序设计等多种编程思想。
##与SmallTalk和Lisp相比,Python更接近传统的编程语言,让程序员更舒服。
##与C和C++相比,Python跨平台性更好。但值得一提的是Python使用C开发。