【delphi开源代码栏目提醒】:网学会员,鉴于大家对delphi开源代码十分关注,论文会员在此为大家搜集整理了“[精品]上海交通大学 - 毕业设计”一文,供大家参考学习!
Python: the Story 赵海 上海交通大学 计算机科学与工程系 zhaohaics.sjtu.edu.cn 本资料部分来自百度百科以及互联网仅用于教学用途 2 概要1/3 ??Python是一种面向对象、直译式计算机程序设计语言是一种功能强大而完善的通用型语言已经具有十多年 的发展历史成熟且稳定。
??具有非常简捷而清晰的语法特点适合完成各种高层任务几乎可以在所有的操作系统中运行。
3 概要2/3 ??Python 具有脚本语言中 最丰富和强大的类库足以支持绝大多数日常应用。
??它的名字来源于一个喜剧也许最初设计Python这种语言的人并没有想到今天Python会在工业和科 研上获得如此广泛的使用。
??著名的自由软件作者Eric Raymond在他的文章《如何成为一名黑客》中将Python列为黑客应当学习的四种编程语言之一并建议人们从Python开始学习编程。
–这的确是一个中肯的建议对于那些从来没有学习过编程或者并非计算机专业的编程学习者而言Python是最好的选择之一。
4 概要3/3 ??Python是面向对象的跨平台的可扩展的解释型通用编程语言它支持模块和包 ??Python的
代码类型有三种.py .pyc .pyo分别是字节
代码二进制
代码优化
代码都可以直接运行无需编译或者链接的步骤而且Python还提供交互执行环境 ??Python是动态类型语言不需要类型声明 ??提供自动内存管理内置高级数据类型和操作支持 ??Python可扩展可嵌入语法简单清晰强调
代码可读性 ??可动态加载C模 块可动态装载Python模块Python属动态语言允许在程序运行期间动态添加删除函数对类和实例可以在运行时动态添加修改方法 ??Python 是具有内省性的语言 ??提供标准的GUI框架开发图形界面程序 ??支持标准Internet协议 ??支持内建的和第三方提供的库丰富的库支持 ??免费使用且完全 开放源
代码。
5 ??虽然Python可能被粗略地分类为“脚本语言”script language但实际上一些大规模软件开发计划例如Zope、Mnet及BitTorrentGoogle也广泛地使用它。
??Python的支持者较喜欢称它为一种高级动态编程语言原因是“脚本语言”泛指仅作简单编程任务的语言如shell script、JavaScript等只能处理简单任务的编程语言并不能与Python相提并论。
??由于Python对于C和其他语言的良好支持很多人还把Python作为一种“胶水语言”glue language使用。
使用Python将其他语言编写的程序进行集成和封装。
在谷歌内部的很多项目使用C编写性能要求极高的部分然后用Python调用相应的模块。
6 Python ??Python的创始人为Guido van Rossum。
??1989年圣诞节期间在阿姆斯特丹Guido为了打发圣诞节的无趣决心开发一个新的脚本解释程序做为 ABC 语言的一种继承。
??之所以选中 Python大蟒蛇的意思作为程序的名字是因为Guido是一个Monty Python的飞行马戏团的爱好者。
??ABC是由Guido参加设计的一种教学语言。
就Guido本人看来ABC 这种语言非常优美和强大是专门为非专业程序员设计的。
但是ABC语言并没有成功究其原因Guido 认为是非开放造成的。
Guido 决心在 Python 中避免这一错误的确如此Python 与其它的语言如C、C和Java结合的非常好。
同时他还想实现在 ABC 中闪现过但未曾实现的东西。
??可以说Python是从ABC发展起来主要受到了Modula-3另一种相当优美且强大的语言为小型团体所设计的的影响。
并且结合了Unix shell和C的习惯。
??Python第一个实现是在Mac机上。
7 Python 3.0 ??Python的3.0版本在开发阶段被称为Python 3000或简称Py3k。
相对于Python的早期版本这是一个较大的升级。
??为了不带入过多的累赘Python 3.0在设计的时候就没有考虑向下兼容。
许多针对早期Python版本
设计的程序都无法在Python 3.0上正常运行。
??为了照顾现有程序Python 2.6作为一个过渡版本基本使用了Python 2.x的语法和库同时考虑了向Python 3.0的迁移。
这一版本已经于2010年7月升级到 2.7版。
??基于早期Python版本而能正常运行于Python 2.6并无警告的程序可以通过一个2 to 3的转换工具无缝迁移到Python 3.0。
8 Python 3.0 ??Python 3.0的变化主要在以下几个方面 –部分函数和语句的改变 ??最引人注意的改变是print语句没有了取而代之的是print函数 –字符串和字节 ??类似Javastr类表示一个Unicode字符串代替了早期版本的unicode类。
而一堆字节则用类似babc的语法创建用bytes类表示 9 Hello World in Python 下面是一个在标准输出设备上输出Hello World的简单程序这种程序通常是学习编程语言时的第一个程序 ??在python2.x版本中 ?? /usr/bin/env python ?? print Hello world ?? 或者 ?? import sys ?? sys.stdout.writeHello worldn ?? /////// ??在python3.x中 ?? print是一个完完全全的函数需要修改成 ?? printHello world 10 Python在编程语言中的定位1/2 ??很多大规模软件开发计划例如 Zope Mnet 及 BitTorrent. Google都在广泛地使用它。
??通常认为Python是一种解释性的语言但是这种说法是不确切的实际上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。
11 Python在编程语言中的定位2/2 ??基于C的Python编译出的字节码文件通常是.pyc格式。
??在实际开发中python常被昵称为胶水语言这不是说他会把你的手指粘住而是说他能够很 轻松的把用其他语言制作的各种模块尤其是C/C轻松地联结在一起。
常见的一种应用情形是使用python快速生成程序的原型有时甚至是程序的 最终界面然后对其中有特别要求的部分用更合适的语言改写比如3D游戏中的图形渲染模块速度要求非常高就可以用C重写。
12 Python1/2 ??可扩充性可说是Python作为一种编程语言的特色。
新的内置模块module可以用C 或 C写成。
而我们也可为现成的模块加上Python的接口。
Python可以使用户避免过分的语法的羁绊而将精力主要集中到所要实现的程序任务上。
??Python也被称为是一门清晰的语言。
因为它的作者在设计它的时候总的指导思想是对于一个特定的问题只要有一种最好的方法来解决就好了。
这在由Tim Peters写的python格言称为The Zen of Python里面表述为 ??There should be one-- and preferably only one --obvious way to do it. ??有意思的是这正好和Perl语言另一种功能类似的高级动态语言的中心思想TMTOWTDITheres More Than One Way To Do It完全相反。
这似乎是人们常把Perl和Python互相比较的重要原因。
13 Python2/2 ??Python语言是一种清晰的语言的另一个意思是它的作者有意的设计限制性很强的语法使得不好的编程习惯例如if语句的下一行不向右缩进都不能通过编译。
这样有意的强制程序员养成良好的编程习惯。
其中很重要的一项就是Python的缩进规则。
??一个和其他大多数语言如C的区别就是一个模块的界限完全是由每行的首字符在这一行的位置来决定的而C语言是用一对花括号来明确的定出模块 的边界的与字符的位置毫无关系。
这一点曾经引起过争议。
因为自从C这类的语言诞生后语言的语法含义与字符的排列方式分离开来曾经被认为是一种程序 语言的进步。
不过不可否认的是通过强制程序员们缩进包括iffor和函数定义等所有需要使用模块的地方Python确实使得程序更加清晰和美 观。
??另外Python在其他部分的设计上也坚持了清晰划一的风格这使得Python称为一门易读、易维护并且被大量用户所欢迎的、用途广泛的语言。
Python直接编写的程序段有时运行效率甚至高于用C编写的程序。
14 Python ??Python语言的执行效率跟C/C/Java比起来要稍逊一筹但是
代码长度大大缩短并且Python跨平台、类库丰富、语法简单、开发速 度快因此
常用Python代替C/Java构建大程序涉及到系统效率的地方可以考虑用C/C实现。
??Python也可以做glue language胶水语言因为Python跟C和Java的沟通能力非常的好。
15 Python 三大脚本语言Perl Python Tcl ??Perl原是专门设计处理文本的这方面能力最强但是不适合编写大程序语法晦涩难懂与之相比Python更易阅读学习可维护性更强代 码安全性更好Python的异常处理并且与
Java语言更好的集成能力 ??Tcl的语法简单和其它程序的交互能力强可以和C语言集成而且有tk 辅助GUI开发但是Tcl更多是作为scripting language和glue language不适合写大程序与之相比Python的应用范围要广阔的多。
??Ruby:Python的正则表达式没有Ruby的用着方便Ruby比Python有更完整的面向对象的语 法Ruby的主要功能都是用类的方法调用来实现的不是函数另一方面由于Ruby的强大语言相对Python复杂Ruby没有内省性缺乏国际化 支持缺乏类似Jython的东西。
16 Python1/3 ??简单————Python是一种代表简单主义思想的语言。
阅读一个良好的Python程序就感觉像是在读英语一样尽管这个英语的要求非常严格Python的这种伪
代码本质是它最大的优点之一。
它使你能够专注于解决
问题而不是去搞明白语言本身。
??易学————就如同你即将看到的一样Python极其容易上手。
前面已经提到了Python有极其简单的语法。
??
免费、
开源————Python是FLOSS自由/开放
源码软件之一。
简单地说你可以自 由地发布这个软件的拷贝、阅读它的源
代码、对它做改动、把它的一部分用于新的自由软件中。
FLOSS是基于一个团体分享知识的概念。
这是为什么 Python如此优秀的原因之一——它是由一群希望看到一个更加优秀的Python的人创造并经常改进着的。
??高层语言————当你用Python语言编写程序的时候你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
17 Python2/3 ??可移植性————由于它的
开源本质Python已经被移植在许多平台上经过改动使它能够工作在不同平台上。
如果你小心地避免使用依赖于系统的特性 那么你的所有Python
程序无需修改就可以在下述任何平台上面运行。
这些平台包括Linux、Windows、Free
BSD、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平台 ??解释性————这一点需要一些解释。
一个用编译性语言比如C或C写的程序可以从源文件即 C或C语言转换到一个你的
计算机使用的语言二进制
代码即0和1。
这个过程通过编译器和不同的标记、选项完成。
当你运行你的程序的时候连接/ 转载器软件把你的程序从硬盘复制到内存中并且运行。
而Python语言写的程序不需要编译成二进制
代码。
你可以直接从源
代码 运行 程序。
在计算机内部Python解释器把 源
代码转换成称为字节码的中间形式然后再把它翻译成计算机使用的机器语言并运行。
事实上由于你不再需要担心如何编译程序如何确保连接转载正确的库等 等所有这一切使得使用Python更加简单。
由于你只需要把你的Python程序拷贝到另外一台计算机上它就可以
工作了这也使得你的Python程 序更加易于移植。
18 Python3/3 ??面向对象————Python既支持面向过程的编程也支持面向对象的编程。
在“面向过程”的语言中程序是由过程或仅仅是可重用
代码的函数构建起来的。
在 “面向对象”的语言中程序是由数据和功能组合而成的对象构建起来的。
与其他主要的语言如C和Java相比Python以一种非常强大又简单的方式 实现面向对象编程。
??可扩展性————如果你需要你的一段关键
代码运行得更快或者希望某些算法不公开你可以把你的部分程序用C或C编写然后在你的Python程序中使用它们。
??可嵌入性————你可以把Python嵌入你的C/C程序从而向你的程序用户提供脚本功能。
??丰富的库————Python标准库确实很庞大。
它可以帮助你处理各种工作包括正则表达式、
文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、
HTML、WAV文件、密码系统、GUI图形用户 界面、Tk和其他与系统有关的操作。
记住只要安装了Python所有这些功能都是可用的。
这被称作Python的“功能齐全”理念。
除了标准库以 外还有许多其他高质量的库如wxPython、Twisted和Python图像库等等。
??概括————Python确实是一种十分精彩又强大的语言。
它合理地结合了高性能与使得编写程序简单有趣的特色。
19 Python ??强制缩进 –这也许不应该被称为局限但是它用缩进来区分语句关系的方式还是给很多初学者带来了困惑。
即便是很有经验的Python程序员也可能陷入陷阱当中。
最常见的情况是tab和空格的混用会导致错误而这是用肉眼无法分别的。
??单行语句和命令行输出问题 –很多时候不能将程序连写成一行如 import sysfor i in sys.path:print I 而perl和awk就无此限制可以较为方便的在shell下完成简单程序不需要如Python一样必须将程序写入一个.py文件。
对很多用户 而言这也不算是限制 20 Python ??运行速度虽然比java快但没法和编译语言相比。
有速度要求的话用C改写关键部分吧。
??国内市场较小国内以python来做主要开发的目前只有一些 web2.0公司。
但时间推移目前很多国内软件公司尤其是游戏公司也开始规模使用他。
中文资料匮乏好的python中文资料屈指可数。
托社区的福有几本优秀的教材已经被翻译了但入门级教材多高级内容还是只能看英语版。
??构架选择太多没有像C这样的官方.net构架也没有像ruby由于历史较短构架开发的相对集中。
Ruby on Rails 构架开发中小型
web程序天下无敌。
不过这也从另一个侧面说明python比较优秀吸引的人才多项目也多。
21 Python ??CPython 通常的Python完全用C语言实现的最原始的版本 ??Jython Python的纯Java实现它可以将Python源
代码翻译成Java字节码在Java虚拟机上运行是与Java的最无缝最平滑的集成而且用户可以从Python访问所有Java库、构建Applet、与Java Bean集成等 ??Python for .NET –.NET平台上实现的Python确切的说Python for .NET是一种编译器和运行时它将 Python 脚本编译成外部虚拟机的格式并使得.
NET类库在Python语言中可用 ??IronPython –.NET平台上的Python相对于传统的PythonIronPython支持可 选的静态编译功能静态编译过的IronPython程序就形成了常规的.NET可执行文件.EXE文件。
甚至还可以将IronPython程序静态 编译为.NET动态链接库.dll文件并且供C和
VB.NET等.NET语言调用 ??PyPy 用Python写的Python环境很有趣 22 ??适用于Python的集成开发环境IDE软件除了标准二进制发布包所附的IDLE之外还有许多其他选择。
其中有些软件设计有语法着色、语法检查、运行调试、自动补全、智能感知等便利功能。
由于Python的跨平台出身这些
软件往往也具备各种操作
系统的版本或一定的移植性。
??专门为Python设计的IDE软件 ?? ● IDLEPython―标准”IDE ?? ● Komodo和Komodo Edit后者是前者的免费精简版 ?? ● PythonWinActivePython软件包的IDE仅适用于Windows ?? ● SPEStanis Python Editor功能较多的自由软件依赖wxPython ?? ● Ulipad功能较全的自由软件依赖wxPython作者是中国Python高手limodou ?? ● WingIDE可能是功能最全的IDE但不是自由软件 ?? ● Eric基于PyQt的自由软件功能强大 ?? ● 有相应插件的通用IDE软件使用难度往往较大 ?? ● eclipse pydev插件稳定性欠佳 ?? ● emacs 插件 ?? ● Vim 插件 ?? ● Visual Studio .NET 2003 VisualPython仅适用Windows已停止维护功能较差 ?? ● SlickEdit ?? ● TextMate ??另外诸如EditPlus、UltraEdit、PSPad等通用的程序员文本编辑器软件也能对Python
代码文本作出一定解释但是否够得上集成开发环境的水平尚有待评估。
23 Python ??Python在编程领域的占有率处于稳步上升之中。
??随着微软将Python纳入.Net 平台相信Python的将来会更加强劲发展。
2003年预测Python 很可能会成为.Net平台快速开发的主流语言。
??Google 大量使用Python。
2006年的Google编程大赛已经将Python作为参赛语言之一。
??Nokia智能手机所采用的Symbian操作系统上Python成为继CJava之后的第三个编 程语言 24 TIOBE编程语言排行榜 2010年6月7日 2010 2009 Programming Language Ratings Delta Status 1 1 Java 18.033 -2.11 A 2 2 C 17.809 1.03 A 3 3 C 10.757 0.16 A 4 4
PHP 8.934 -0.74 A 5 5 Visual Basic 5.868 -2.07 A 6 7 C 5.196 0.66 A 7 6 Python 4.266 -0.49 A 8 9 Perl 3.200 -0.71 A 9 45 Objective-C 2.469 2.35 A 10 11
Delphi 2.394 0.21 A 11 8 JavaScript 2.191 -1.83 A 12 10 Ruby 2.070 -0.56 A 13 12 PL/SQL 0.787 -0.09 A 14 14 SAS 0.703 -0.06 A 15 15 Pascal 0.702 -0.06 A- 16 18 Lisp/Scheme/Clojure 0.654 0.05 B 17 19 Lua 0.592 0.04 B 18 20 M
ATLAB 0.589 0.06 B 19 16 ABAP 0.577 -0.15 B 20 27 PowerShell 0.529 0.23 25 Python ??
系统编程 提供API方便进行系统维护和管理Linux下标志性语言之一是很多系统管理员理想的编程工具。
??
图形处理 有PIL、Tkinter等图形库支持能方便进行图形处理。
??数学处理 NumPy扩展提供大量与许多标准数学库的接口。
??文本处理 python提供的re模块能支持正则表达式还提供SGMLXML分析模块许多程序员利用python进行XML程序的开发。
??数据库编程 程序员可通过遵循Python DB-API数据库应用程序编程接口规范的模块与Microsoft
SQL ServerOracleSybaseDB2My
sql、SQLite等数据库
通信。
python自带有一个Gadfly模块提供了一个完整的 SQL环境。
??
网络编程 提供丰富的模块支持sockets编程能方便快速地开发分布式应用程序。
??Web编程 应用的开发语言支持最新的XML技术。
??多媒体应用 Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”能进行二维和三维图像处理。
PyGame模块可用于编写游戏软件。
26 Python ??官方主页 http://www.python.org/ ??Windows的 python解释器http://www.python.org/ftp/python/3.1.2/python-3.1.2.msi ??python中文社区 http://python.cn ??ChinaUNIX论坛区的python版http://bbs.chinaunix.net/forum-55-1.html ??一切关于python教程都在“python中国” http://www.okpython.com ??灵蛇网http://
bbs.pythonid.com/ ??Limodou的学习笔记木头 –http://blog.donews.com/limodou/ –http://limodou.javaeye.com/ –http://hi.baidu.com/limodou ??肥三的专栏——热酷网CTO梁冰鸿/更新到2009年http://blog.csdn.net/FeiSan 27 PythonPythonic ??在Python交互环境中输入”import this‖可以看到Python语言的设计哲学 ??import this ??The Zen of Python by Tim Peters ?? ?? ??Beautiful is better than ugly. ??Explicit is better than implicit. ??Simple is better than complex. ??Complex is better than complicated. ??Flat is better than nested. ??Sparse is better than dense. ??Readability counts. ??Special cases arent special enough to break the rules. ??Although practicality beats purity. ??Errors should never pass silently. ??Unless explicitly silenced. ??In the face of ambiguity refuse the temptation to guess. ??There should be one-- and preferably only one --obvious way to do it. ??Although that way may not be obvious at first unless youre Dutch. ??Now is better than never. ??Although never is often better than right now. ??If the implementation is hard to explain its a bad idea. ??If the implementation is easy to explain it may be a good idea. ??Namespaces are one honking great idea -- lets do more of those Enjoy Python