免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 34816 | 回复: 75
打印 上一主题 下一主题

带你读:Python核心编程(中文第二版)[原创] [复制链接]

论坛徽章:
0
1 [报告]
发表于 2008-07-07 20:47 |只看该作者
来自维基百科的介绍:

    Python是一种编程语言,它的名字来源于一个喜剧。也许最初设计Python这种语言的人并没有想到今天Python会在工业和科研上获得如此广泛的使用。著名的自由软件作者Eric Raymond在他的文章《如何成为一名黑客》中,将Python列为黑客应当学习的四种编程语言之一,并建议人们从Python开始学习编程。这的确是一个中肯的建议,对于那些从来没有学习过编程或者并非计算机专业的编程学习者而言,Python是最好的选择之一。Python第一次学习Python,我只用了不到二十分钟的时间,站在书店里把一本教初学编程的人学习Python的书翻了一遍。也是从那时起,我开始被这种神奇的语言吸引。

    Python可以用来开发symbian上的东西。

    易用与速度的完美结合Python是一种用起来很方便的语言,很多初学Java的人都会被Java的CLASSPATH搞得晕头转向,花上半天的时间才搞明白原来是CLASSPATH搞错了自己的Hello World才没法运行。用Python就不会有这种问题,只要装上就能直接用。

    Python是一种脚本语言,写好了就可以直接运行,省去了编译链接的麻烦,对于需要多动手实践的初学者而言,也就是少了出错的机会。而且Python还有一种交互的方式,如果是一段简单的小程序,连编辑器都可以省了,直接敲进去就能运行。Python是一种清晰的语言,用缩进来表示程序的嵌套关系可谓是一种创举,把过去软性的编程风格升级为硬性的语法规定。再不需要在不同的风格间选择、再不需要为不同的风格争执。与Perl不同,Python中没有各种隐晦的缩写,不需要去强记各种奇怪的符号的含义。Python写的程序很容易懂,这是不少人的共识。Python是一种面向对象的语言,但它的面向对象却不象C++那样强调概念,而是更注重实用。不是为了体现对概念的完整支持而把语言搞得很复杂,而是用最简单的方法让编程者能够享受到面向对象带来的好处,这正是Python能像Java、C#那样吸引众多支持者的原因之一。

    Python是一种功能丰富的语言,它拥有一个强大的基本类库和数量众多的第三方扩展,使得Python程序员无需去羡慕Java的JDK。Python为程序员提供了丰富的基本功能使得人们写程序时用不着一切最底层做起。说到这里,人们通常会用一种担心:脚本语言通常很慢。脚本语言从运行的速度讲的确会慢一些,但Python的速度却比人们想象得快很多。虽然Python是一种脚本语言,但实际上也可以对它进行编译,就象编译Java程序一样将Python程序编译为一种特殊的ByteCode,在程序运行时,执行的是ByteCode,省去了对程序文本的分析解释,速度自然提升很多。在用Java编程是,人们崇尚一种Pure Java的方式,除了虚拟机一切东西都用Java编写,无论是基本的数据结构还是图形界面,而Pure Java的SWING,却成为无数Java应用开发者的噩梦。Python崇尚的是实用,它的整体环境是用C来编写的,很多基本的功能和扩展的模块都是用C/C++来编写的,当执行这一部分代码时,它的速度就是C的速度。用Python编写的普通桌面程序,其启动运行速度与用C写的程序差别不大。除了这些,通过一些第三方软件包,用Python编写的源代码还可以以类似JIT的方式运行,而这可以大大提高Python代码的运行速度,针对不同类型的代码,会有2倍至100倍不等的速度提升。

    Python是我见到过的语言中,在易用性和速度上结合的最完美的一个,通过丧失一点点经常可以忽略不计的运行速度从而获得更高的编程效率,这就是我选择Python的原因。把精力放在要解决的问题上选择一种合适的语言,才能让你把有限的精力放到最需要解决的问题上。不同的语言有不同的作用,C和汇编适合编写系统软件,如果用它们来编写企业应用,恐怕没几个人能得心应手。我以前就碰到一个用汇编写数据库程序的哥,虽然最基本的功能完成了,但要增加个报表预览什么的,他就没法应付了。聪明的程序员是用合适的工具去完成任务,想找一把万能钥匙是不太可能的。Python的自动的垃圾回收机制是高级的编程语言的一种基本特性,用拥有这一功能的语言编程,程序员们通常不用去关心内存泄漏的问题,而当我们用C/C++写程序时,这却是最重要的需要认真考虑却又很容易出错的问题之一。数据结构是程序构成的重要部分,链表、树、图这些在用C编程时需要仔细表达的问题在Python中简单了很多。在Python中,最基本的数据结构就是数组、序列和哈希表,用它们想要表达各种常见的数据结构是非常容易的。没了定义指针、分配内存的任务,编程变得有趣了。CORBA是一种高级的软件体系结构,它是语言无关平台无关的。C++、Java等语言都有CORBA绑定,但与它们相比,Python的CORBA绑定却容易很多,因为在程序员看来,一个CORBA的类和Python的类用起来以及实现起来并没有什么差别。没了复杂体系结构的困扰,用Python编写CORBA程序也变得容易了。好钢要用在刀刃上,要想用有限的时间完成尽量多的任务,就要把各种无关的问题抛弃,而Python恰恰提供了这种方法。跨平台又易扩展随着Linux的不断成熟,越来越多的人转到Linux平台上工作,软件的开发者自然就希望自己编写的软件可以在所有平台下运行。Java一次编写处处运行的口号使它成为跨平台的开发工具的典范,但其运行速度却不被人们看好。实际上,几乎所有的著名脚本语言都是跨平台的,Python也不例外。Python不仅支持各种Linux/Unix系统,还支持Windows,甚至在Palm上都可以运行Python的程序。一个程序想要跨平台工作,不仅仅需要语言本身能够做到在平台之间兼容,在图形化界面的时代,还需要有能跨平台工作的Widget。Python不仅支持老一些的TK,还支持新的GTK+、QT以及wxWidget,而这些Widgets都可以在多个平台上工作。通过它们,程序员就可以编写出漂亮的跨平台GUI程序。Python通常是运行在native代码与脚本代码之间,程序员可以用C/C++为Python编写各种各样的模块,这不仅可以让程序员以Python的方式使用系统的各种服务及用C/C++编写的优秀函数库和类库,还可以大幅度提高Python程序的速度。用C/C++编写Python的模块并不复杂,而且为了简化这一工作,人们还制作了不少工具用来协助这一工作。正是因为如此,现在各种常用的函数库和类库都有Python语言的绑定,用Python可以做到的事情越来越多了。万能钥匙?Python功能强大,但它却不是万能的。如果你要编写操作系统或驱动程序,很显然,Python是做不到的。要写软件,没有哪个工具是万能的,现在之所以有那么多的编程语言,就是因为不同的语言适合做不同的事情。因此,选择适合自己的语言工具是最重要的。

论坛徽章:
0
2 [报告]
发表于 2008-07-07 20:48 |只看该作者
让我们走进python


脚本语言是类似DOS批处理、UNIX shell程序的语言。脚本语言不需要每次编译再执行,并且在执行中可以很容易地访问正在运行的程序,甚至可以动态地修改正在运行的程序,适用于快速地开发以及完成一些简单的任务。在使用脚本语言时常常需要增的新的功能,但有时因为脚本语言本来就已经很慢、很大、很复杂了而不能实现;或者,所需的功能涉及只能用C语言提供的系统调用或其他函数——通常所要解决的问题没有重要到必须用C语言重写的程度;或者,解决问题需要诸如可变长度字符串等数据类型(如文件名的有序列表),这样的数据类型在脚本语言中十分容易而C语言则需要很多工作才能实现;或者,编程者不熟悉C语言:这些情况下还是可以使用脚本语言的。
在这样的情况下,Python可能正好适合你的需要。Python使用简单,但它是一个真正的程序语言,而且比shell提供了更多结构和对大型程序的支持。另一方面,它比C提供更多的错误检查,它是一个非常高级的语言,内置了各种高级数据结构,如灵活的数组和字典,这些数据结构要用C高效实现的话可能要花费你几天的时间。由于Python具有更一般的数据结构,它比Awk甚至Perl适用的范围都广,而许多东西在Python内至少和在这些语言内一样容易。
 
Python允许你把程序分解为模块,模块可以在其他Python程序中重用。它带有一大批标准模块可以作为你自己的程序的基础——或作为学习Python编程的例子。系统还提供了关于文件输入输出、系统调用、插座(sockets)的东西,甚至提供了窗口系统(STDWIN)的通用接口。
 
Python是一个解释性语言,因为不需要编译和连接所以能节省大量的程序开发时间。解释程序可以交互使用,这样可以可以很容易地试验语言的各种特色,写只用一次的程序,或在从底向上程序开发中测试函数。它也是一个方便的计算器。
 
Python允许你写出非常严谨而且可读的程序。用Python写的程序通常都比相应的C程序要短,因为如下几个理由:
   
高级的数据结构允许你用一个语句表达复杂的操作;    
复合语句是靠缩进而不是用表示开始和结束的括号;    
不需要变量声明或参量声明。   
Python是可扩充的:如果你会用C语言编程就很容易为解释程序增加新的内置函数或模块,这样可以以最快速度执行关键操作,或把Python程序和只能以二进制码提供的库(如不同厂商提供的图形库)连接起来。当你变得确实很在行时你可以把Python解释器与用C写的应用相连接,把它作为该应用的扩展或命令语言。  
Python的命名是由BBC的“Monty Python's Flying Circus”节目而得,与蟒蛇没有什么关系。

[ 本帖最后由 gvtbs 于 2008-7-23 08:59 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2008-07-07 20:49 |只看该作者

python环境搭配

今天主要讲python环境的搭配,从今天起的内容将是原创,转贴请注明作者OK.首先先把这两个地址发出来,个人推荐两个都下载试用一下

各有各的特色,第二个比较强大一点。

python目前版本是2.5.2,支持多种操作系统.安装后自带idle的ide,直接就可以开始编写python程序了。

http://www.python.org/ftp/python/2.5.2/python-2.5.2.msi
http://www.python.org/download/
1 IDLE是python创初人Guido van Rossum使用python and Tkinter来创建的一个集成开发环境。要使用IDLE必须安装python and Tkinter。
2 特性:自动缩进,彩色编码,命令历史(Alt+p,Alt+n)和单词自动(Alt+/)完成。
3 用IDLE执行Tkinter程序,不要在程序中包括mainloop。IDLE本身就是Tkinter应用程序,它会自动调用mainloop。再调用一次mainloop会与

IDLE的事件循环冲突,造成运行时错误。


pythonwin一个python很不错的环境,找这个链接我可是注册了一个鸟论坛等了一个小时回复了一下才能看到地址,奶奶的一看是别人站上的。

最后找到这人地址,大家进入下载页面后,简单填写注册信息,提交后后就会出现下载页,选择与自己系统相符合的版本下载即可!
http://www.activestate.com/store ... d-a722-7a0c2dea2758

1 Pythonwin集成开发环境包含在由ActiveState出品的ActivePython中,ActivePython是一个二进制build。其中包括用于XML处理的expat模块

,以及一系列windows工具。
2 提供的特性有:彩色编码、源代码折叠、单词完成及自动缩进。调试器支持事后诊断功能、标准的单步调试、断点设计及变量监视。
3 详情请访问aspn.activestate.com/activepython

其它还有很多我这里就不多作介绍了,下载不了的朋友留下邮箱我给发过去。

上面介绍的两个环境的安装方法大体都差不多也很简单这里就不介绍了,如果两个环境都安装的朋友可以选择两个不同的文件安装。


一些python的资料:
Python 指南 :http://chinesepython.org/pythonfoundry/tut2.3/tmp/
Python 参考手册:http://chinesepython.org/pythonfoundry/ref2.3/tmp/
Python 库参考手册:http://chinesepython.org/pythonfoundry/lib2.3/tmp/
Python 研究(Dive Into Python):http://www.woodpecker.org.cn/diveintopython/toc/index.html
Python 精要参考:http://roading.net/download/python/Python精要参考.pdf

图片欣赏:

两平台有很多相同的文件,大家试试吧!

[ 本帖最后由 gvtbs 于 2008-7-23 16:56 编辑 ]

2.jpg (97.06 KB, 下载次数: 116)

两平台一块

两平台一块

3.jpg (121.17 KB, 下载次数: 113)

启动第一个平台

启动第一个平台

4.jpg (169.54 KB, 下载次数: 110)

启动第二个平台

启动第二个平台

5.jpg (161.5 KB, 下载次数: 120)

两平台对比

两平台对比

论坛徽章:
0
4 [报告]
发表于 2008-07-07 20:51 |只看该作者

python语法以及代码约定

在前面几节里我们了解了一下python的来历以及环境的安装,接下来的日子里我们要开始学习python的语法和代码约定.希望各位朋友能喜欢,多

多给我打汽.

1.行结构

   在python中程序是以换行符结束的,虽然有的时候我们在语句后面加上";"并不会出现错误,但是python是以换行符结束的希望大家记住哦.
   我们在编程过程中有可能会遇到特别长的语句,这个时候我们可以使用续行符(\)来分成几个短小的行.不过在定义一个三引号字符串、列表、tuple或字典的时候不需要续行符来分割语句。

  例如:
     
  print "ok"
   
   a="dsfsdfsdfdss \
   sdfsdfsdds
   "
   
   a=[1,2,
   3]


这三句话都是合法的,第二行到第五行是一个语句,六七两行也是合法的。


2.缩进

    缩进在程序用来代码不同的代码块,缩进的数目是可以任意的长度的可以是一个制表符也可以多个制表符,但是在整个块当中缩进必需是

一致的,请看下例:

   a=10
    if (a>0):
            a=a-1
            print(a)
    b=0
    if(b<10):
            b++
            print(b)
上面这是合法的,下面我来说一个不合法的:


   a=10
    if (a>0):
            a=a-1
                    print(a)
这里print(a)与上一句a=a-1是同一块内的,可是由于他们缩进不一致所以程序运行后就会报错!

如果块中的语句很少我们可以把它们放在同一行如:

if a: print(a)
else: print("no")

这也是合法的,但是在编程中最好还是按个人的爱好来,在缩进过程中大家要注意千万不要把空格和制表符混在一块使用,虽然这样用并不会

出现什么错误但是在以后的维护中将带来很大的麻烦,我个人建议全用制表符缩进,当然这个也是要看个人偏好的。最好注意一下,在非交互

模式下解析器是忽略所有的空间行的。


3.标识符
       
  标识符是于识别变量、类、函数、模块以及其它对象的名字,标识符是由:数字、字母和下划线组成的,标识符必需以下划线或字母开头(

非数字的字符开头)。标识符是区分大小写的也就是说变量A与a是两个没有任何关系的变量,标识符中不能包涵特殊符号如%$*等。当然标识符

也不能与保留字想重复。

4.保留字

保留字就是程序中规定不能在代码中用作标识符的字,保留字不允许用户重新定义进行其它功能使用的单词,比如if只用在条件语句里面,不

允许if=10来定义一个叫做if的变量。python的保留大家可以去查一下手册,这里我就不详细罗列了。


5数值类型

   python中有四种内容的类型:整数、浮点数、长整数和复数。
   整数如:123、543、785等,整型受机器字长限制。
   长整数:在整型数后面加上一个L或l系统就认为这是一个长整型(如1424L),长整型只受内存字长限制。
   浮点数:122.20等
   复数:是在整数或是浮点数后面加一个J或J就成了复数。

6.字符串类型

   目前python支持两种字符串类型,分别是:

        8位字符数据(ASCII)和16位宽字符数据(Unicode),我们常用的是8位字符数据,因为这个字符集正只用一个字节放任意一个字符。
        例:a='dfd'、a="dfd"、a='''dfd'''或a="""dfd"""都是合法的,注意引号的前号要对应。


7.运算符

   运算符在编程当中是必不可少的一部分,由于篇幅原因,在这里我就不介绍了。大家想了解的到

http://www.woodpecker.org.cn:908 ... hinese/ch05s02.html看一下。

[ 本帖最后由 gvtbs 于 2008-7-24 20:07 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2008-07-08 15:20 |只看该作者
python最大的特征就是开发来得块,像蛇一样的快!

论坛徽章:
0
6 [报告]
发表于 2008-07-08 19:56 |只看该作者
可读性很强啊,期待后续。。。

论坛徽章:
0
7 [报告]
发表于 2008-07-09 12:24 |只看该作者
原创吗?

论坛徽章:
0
8 [报告]
发表于 2008-07-10 13:57 |只看该作者
怎么没有下文了啊

论坛徽章:
0
9 [报告]
发表于 2008-07-23 09:21 |只看该作者
占位待发

论坛徽章:
0
10 [报告]
发表于 2008-07-23 09:22 |只看该作者
占位待发
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP