啄木鸟/CPUG分享会课 2006 第9.1次

-- ZoomQuiet [2006-08-17 02:42:52]

第021期Seminar讨论

1. CPUG第9.1次

时间: 16/08/06 7:30pm~
地址:yycgy沙龙Seminar教室群(QQ群号-23150087)

1.1. 笔记

http://www.3units.com/blog

感谢limodou为我们作的精彩讲座,希望以后可以继续合作。以下是今晚讲座记录
,其中提问互动的内容放到了最后,有少量删减。

----------------------------
今晚由CPUG(Chinese Python User Group)成员Limodou为大家做讲座。
内容是:Python基础知识介绍
讲座文档地址 http://www.woodpecker.org.cn:9081/classes/0904-tutpy/tutpython001/ 也可以在本群的共享空间下载 python.rar

Limodou是CPUG的中坚成员,NewEdit编辑器的开发者。
blog地址 http://blog.donews.com/limodou
其他信息 http://wiki.woodpecker.org.cn/moin/limodou

向大家介绍一下讲座流程:

1. 讲座开始前,由主持人介绍该次讲座的信息,并宣布讲座正式开始;
2. 讲座开始后,由主讲人按照讲稿内容逐张介绍相关内容。在主讲人讲座过程中,如果参与讲座其他会员有什么问题,请不要在群聊天室内直接提问,应该和主持人私聊联系,排序提问;
3. 主持人根据讲座进程,合理安排提问互动时间(一般安排一到两次,每次10min左右)。在提问互动时间,有问题的会员根据步骤2.中的提问排序顺序 在群聊天室内直接向主讲人提问,主讲人有义务认真、仔细回答所提问题(主讲人知道的,一定要讲清楚;不清楚的或不知道的,请说明);
4. 提问互动流程结束后,主持人宣布讲座继续,主讲人如步骤2.流程一样,继续讲座;
5. 如果安排了两次提问互动时间,具体流程参加步骤3.和4.;
6. 讲座结束后,由主持人宣布该次讲座正式结束,参与讲座的其他会员向主讲人和主持人致谢

另外,主讲人文字颜色为黑色, 主持人文字颜色为红色, 为保持屏幕整洁,请会员提问时使用黑色文字, 多谢合作

现在讲座开始, 有请limodou




谢谢主持人  本次讲座是与saminar++一起举行的,由于是第一次,因此主要是简介性质的东西. 希望大家对Python可以有一个初步地了解,并且能够喜欢上python,在以后的工作和学习中使用它. 下面讲座就开始了

大家看第一页. 本页介绍了什么是Python语言,及学习它的一些好处. 有些好处是开发心得. 注意Python是一种通用的编程语言,这一点可以在后面看到

现在看第二页. Python的创始人. 原来是荷兰人,现在在美国,并且目前在Google上班.

现在看第三页. Python是如何誔生的

现在看第四页. 是前面的继续. 一些Python初始的设计原则

现在看第五页. 历史的继续

现在看第六页. 目前稳定版本是2.4.3 最高版本是2.5 Python是跨平台的,可以在多种操作系统上运行,同Java一样

现在看第七页. 这里介绍了Python的一些应用的领域. 可以看出,包含的范围很广,基本上你想到的都有应用

现在看第八页. 这里是与GUI相关的内容. 上面列出的都是可用的GUI的包. 其中还有一些没有列出,因此使用者比较少. tcl/tk是Python内置的. wxPython是wxWidgets的Python封装. 而wxWidgets是一个优秀的跨平台的GUI库. ctypes本身不是一个GUI的包 但是它可以直接调用windows和Linux下的动态库,因此也可以做GUI. pyswt是对Eclipse作使用的swt的一个封装. 这些库都是可以跨平台的,因此Python做GUI的可选范围很大. 就目前来说在windows下使用wxPython的比较多,可以参考的开源项目也挺多. 象本人的NewEdit就是使用wxPython开发的. 而在Linux下则pygtk多一些

下面看第九页. 这里介绍了与网络开发有关的内容. 比如可以直接进行socket编程. Python有一个非常著名的项目叫twisted. 它采用异步回调的方式进行处理,而且支持的协议也非常多, 功能很强大,性能也非常好。jabber是一种开放的即时通讯应用,在python中有相关的模块可以使用. 象Google talk bot就是使用jabber.py来开发的, 可以与gtalk进行通讯. python-qq这是cpug的一位成员的项目,目的是使用python来与qq通信.

下面看第十页. 这里讲与图形处理相关的内容. PIL是Python Image Lib的简称. 它是一个Python的模块,可能处理多种图片格式,非常好用。在Python中应用很多. plot是统计图显示,在python中也有许多可以使用的模块. python也有一些可以进行3d和2d处理的模块, 而且非常多, 象著名的blender,就有python的接口.

下面看第11页 这里是介绍与文档生成相关的内容 epydoc是一种文档提取工具,同时它支持几种文档标记格式 它生成的结果就象是javadoc一样的格式. 因此你可以在你的程序中使用epydoc的标记来写函数的说明,最后生成一个文档. reStructuredText是一种结构化文本, 可以通过简单的文本格式来转换为多种目标格式, 如可以生成html, latex, docbook等, 它是python的标准文档写作格式. reportlab是一个专门用来生成pdf的模块. moinmoin不是一个模块,它算是一个应用, 它是一种wiki系统,但是你可以用它来管理你的文档, 同时它功能很强大,有许多的插件可以使用, python还有许多其它的文档格式,如pydoc, textile等.

下面看第12页. Python还可以编写游戏. pygame是一个对sdl的一个封装. 在cpug中,有一位成员还用pygame编写了一个连连看,效果很不错.

下面看第13页. 这里讲的都是与web开发相关的内容. 上面所列的都是一些框架的名字. 还有许多没有列出来,可能大概有几十种. 其中功能最强大的要算是zope/plone了. zope是一个集web server, ftp server,应用开发于一体的应用服务器. 现在最新版本是zope3. zope内部使用一种叫做对象数据加的存储. 而plone是建在zope之上的一个cms系统. 它在许多行业都有应用. 它的功能也是非常的强大. mod_python相对是比较底层. 它直接与Apache打交道,一般都被其它的框架来使用,作为基础模块. 因为它是以module的形式挂在apache下的,因此它的执行效率很高. karrigell是一个轻量级的框架,很象php,写东西也很方便,上手用它最好了. cherrypy主要是一个web server,当然它有自已的对象发布机制. 它不算完整,因为它没有自已的模板系统和数据库系统. 不过它被用在了turbogears框架中. turbogears(这里没有列出来,写得有些早了). django, turbogears, pylons算是同一级别的,比karrigell要复杂一些. turbogears与pylons的理念接近. 都是使用了成熟模块进行组合. 而django则是一体化的,自由模板,ORM,用户管理. 特别是django可以根据数据库的Model的定义生成一个Admin界面可以用来管理你的数据. turbogears也有类似的功能。关于django turbogears两者的使用和不同,在IBM的开发网站有都文章进行介绍. 这三个都是rails方式的框架. quixote是从zope转化来的. 因为原作者有多年使用zope的经验. 目前国内著名的web 2.0网站:豆瓣网 douban.com 就是用的它. snakelets是一个类java的jsp servlet的框架. 象模板中的标记都非常象. 总之python下可以做web的东西非常多,选择也非常大. 时不时的会冒出一些新的框架. 为什么呢?有人说Python太简单,功能又强,因此重新发明轮子的成本低.

下面看第14页. 这里介绍了一些与科学技术相关的模块. 可以用它们来进行矩阵之类的处理.

下面看第15页. 这里介绍了与移动开发有关的内容. 在掌上电脑你可以使用python进行编程,它可以运行在windows ce上. 还可以在Nokia的Series 60系统的系统上运行. 当然这两个是不同的.

下面看第16页. python还可以被嵌入到其它语言中进行使用. 比如象游戏,许多的脚本开发都是使用python,然后在c/c++中进行调用. 还有一些测试也是这样做的.

下面看第17页. python可以进行数据库的开发. 它有一个标准的db-api的接口. 这个接口规定了如何操作数据库的一些规范,如创建的对象,可用的方法及返回的信息要求等. 只要你使用的模块满足db-api的要求,那么使用的方法都是一样的. 有些象odbc和jdbc,不过不同的是db-api只是一个标准,不是真正的代码. 但在python中却有支持odbc的模块. 当然支持odbc的模块只是众多python数据库模块的一种. 一般来说,每一种数据都会有一个对应的模块来具体的实现db-api. 这一点就象是java的jdbc的驱动一样. 象常见的mysql, orcale, sqlite, postgre都有python的模块. sqlite是一个很小巧的数据库. 它的数据库只用一个文件保存,不支持远程访问,不需要用户管理. 因此它特别适合进行测试和作为嵌入式使用. 它还支持标准的sql. 字符全部采用unicode,非常好用。.

下面看第18页. 这里讲python对其它语言和平台的影响. python因为语法优美,功能强,因此在许多平台和语言上都有它的身影. 如在java平台上有用纯java开发的python,它的名字叫jython. 因此使用jython你可以即使用python的模和语法,也可以直接调用java的类. 既可以使用java的强大,又可以保持python的优美. groovy是另一种在java平台上运行的脚本语言. 象它从python吸收了许多东西. 在.net平台上,也有使用C#开发的python,叫IronPython. 目前M$已经把IronPython作为.net平台的一部分了. 因此使用IronPython即可以使用Python的强大库,还可以使用.net平台上的东西. boo就象是groovy一样,它是运行在.net上的另一种语言,但语法也是从python中学了许多. 好。先休息一下。一会再继续


下面看第19页. python的一些特性. python程序可以象一般程序一样,一次执行完毕. 但它因为是解释型语言,因此可以逐条执行. python本身提供了交互环境,可以一条条地执行代码. 注意我这里的意思是说你可以一条条地在交互环境下输入代码. 然后当时就看到结果. 因此这就是python非常方便的一个地方. 甚至做GUI都可以这样. 对于小的代码片段直接在交互环境下就可以测试了,不用是一个完整的程序,非常方便. python提供有文本方式的交互环境,还带有一个用tcl/tk 写的IDEL的图形交互环境. 许多python的编辑器也都有交互功能. 动态绑定是说在python中对象与变量名是一种绑定的关系. 一个对象可以有多个变量名与之绑定. python可以自动进行垃圾回收. 它通过引用计数来进行回收处理. 给一个变量赋值就是将计数加1. 如果没有人使用就减1,为0则释放. 另外,动态的概念还体现在它的类型是在赋值时决定的. 一个变量可以通过赋值指向不同类型的对象,因为是做了一次新的绑定. python不需要显示的类型声明,但赋值时的对象值已经包含了它的类型. python是完全的面向对象的语言,从基本类型到函数,到类都是对象. 所以有一句话说:一切皆对象. 而且python中的对象有许多高级的功能. 这些可以等大家有深入了解再交流. 前面有人问什么是模块,什么是包. 包是一个相对大的概念,一般是包含多个文件,甚至有目录. 而模块一般是一个文件. 在python中使用包和模块需要象java一样通过import命令进行导入. 为什么?. python还有人称之为胶水(glue)语言. 因为你可以使用c/c++来写模块,经过封装后在python中进行调用. 而且有一些封装的工具可以很方便地使用. 如swig可以封装c/c++,sip主要用在pyqt中,封装c++. 因此,对于一些原有的c/c++模块,可以通过封装来在python 中使用. python的语法很有趣. 最明显的一点就是缩近了. python中的缩近是语法要求,如果缩近不对都会报错. 同时它的语法简洁优美,许多语句很短即可完成. 举个小例子,比如打印一个文件文件a.txt怎么写. 很简单:print file('a.txt').read(). 一句许即可. 一句话即可. 另外python内置了许多强大的数据结构,如list相当于动态数组,dict相当于hash表. 而且由于python没有静态类型声明,你可以在 list, dict中混合存放这些对象,如:a = ['string', 1, [2,3], {'a':1, 2:'string'}]. a是一个list,但它的元素五花八门,没问题的,因为这是python. 同时在计算方便,python可以非常方便地计算大数,因此许多科学计算的东西都喜欢使用python。


下面看第20页. 这里讲python的几种运行方式. 前面已经简单介绍过了. 其中图形窗口是说你可以使用python开发图形程序,并且运行在图形界面下. 嵌入方式是可以在宿主语言中调用python的库函数,或调用python的源代码的运行方式.

下面看21页. 这一点前面讲了,python的对象与变量名之前是一种绑定的关系.

下面看22页. 这里介绍python的面向对象的一些内容. 比如python象c++一样可以支持多重继续,因此很少需要象interface一样的东西. 目前python并不支持interface,不过以后可能会引入. python支持异常处理,这个是面向对象必不可少的. python自动进行垃圾回收,你不用关心内存的问题. python目前有两种对象系统,classic class 和new style class. 以后将被 new style class取代。而且new style class还具有象property(属性)这样的功样,还可以进行metaclass编程. 当然这些一般编程是用不到的,除非你需要设计精巧的框架. python还支持操作符重载,它通过在类中定义一些特殊的方法来实现,比如实现对象间使用加号之类的. 元类就是生成类的类,在python中是type. 这里不再深入下去,比较复杂.

下面看23页. 模块可以被他人使用,只要导入即可. 在python中,对于包一般都有标准的格式. 而且一般是通过python setup.py install来进行安装. 想生成一个可以安装的包需要使用工具. 如使用目前python的disutils还可以使用比较新的setuptools. 生成的包可以是源码包,还可以是可执行的包,支持许多格式,有些包还可以自动调用编译器进行编译. 你可以对python进行扩展. 前面已经介绍过了. ctypes是可以直接调用动态链接库.

下面看25页,前面跳过了24页. python中对于unicode的支持非常好. 在2.4版本中内置了亚洲编码. 不过,有些标准的Python模块内部编码并不是unicode的,因此可能到python的未来版本可能会统一,象java一样.

下面看26页. 这里介绍了一些有趣的语法,前面我也简单地说过. a, b = 1, 2. 对于变量交换,举个例子:b, a = a, b. 第一行同时定义了两个变量a, b . 第二行进行了交换,非常方便吧. 不需要引入第三个变量. python中的函数支持可变参数,和参数可以有缺省值. 比如:def f(*args, **kwargs). 这里定义了两种不同的可变参数,一种是位置变的,一种是关键字形式的. 具体的可以等学到相应的语法大家自已去看.

下面看27页. 这是其它的一些特性. 比如象java一样可以编译成字节码,下次运行时就会快了. 其它的就不再细说了. 好了,先休息一下,一会再讲


下面看28页. Python有自已的哲学. 大家可以在交互环境下敲入:import this. 可以看到一首诗. 它就是python语言的哲学. 在啄木鸟社区上有翻译,有兴趣可以找一找. 简单地说python的哲学就是:简单就是美. 有时候有人会对你的代码作出是否pythonic的评论. 那么什么是pythonic呢?这很难回答. 但是可以通过上面的诗可以印证.

下面看第29页. 这是译文,有兴趣可以读一读. 总的来说就是简单,一致.

下面看30页. 这是我总结的一些学习python的心得. 多练习,多看别人的代码,多与别人交流,如果能多写作进行经验的分享就更好了. 希望大家努力.

下面看第31页. 这是python在中国的发展历史. 其中啄木鸟社区是最大的一个python的开源社区,它是cpug的前面. 在页面上都有链接可以进去. cpug就是china python user group. 目前它只是一个形式上的组织,没有一个实体. 我们的组织很松散,因此任何人可以加入. czug是china zope group. 它是由上海的润普公司创办. 它们主要是研究和推广zope/plone. 而cpug主要是python/python相关的学习和研究. 我们主要的活动一个是在邮件列表中,有好几个. 再有一些成果放在啄木鸟的wiki上。. 还有许多分散的pythoner的blog.

下面看32页. 这里是一些资源. 有python的官方的一些信息. 还有一些项目的集散地. 还有象planetpython是一个pythoner的rss的聚合. 国内有几个论坛。象中国Linux论坛,不过人气已经不行了。. 现在比较火的是ChinaUnix论坛。. 当然还是比不了邮件列表了. 目前有两个邮件列表,一个是google提供的服务,一个是由北京exoweb提供的mailman服务. 两个列表是并行的,象我是两个都订阅的. 我们在北京的pythoner每个月会组织一次线下活动,大家见一见面,作一些专题的交流. 每次会课都在wiki中有记录,比如有讲课的材料和录音的下载. 象我这次的讲课内容就是以前作的讲座留下来的. 希望有兴趣的参加我们的邮件列表和会课(当然你要在北京). 好,我的讲座暂告结束.


这一次的讲座内容到此结束。各位如果还有Python方面的问题,可以加入python-cn的邮件列表继续交流
同时也欢迎Python用户加入Seminar社区 www.3units.com/blog 每周都有不同类型讲座等您参与,呵呵
讲座记录整理后会上传到seminar网站,请察看


------------- 提问互动交流 ------------------

2006-08-16 19:54:33     琳琳的小狗(99352246)
pyswt,是象wxpython那样的,一个封装么?

2006-08-16 19:55:09 limodou(8582874)
差不多 swt是Eclipse使用的,它基本上是java的,因此封装还是很麻烦的. 先是使用gcc的java编译器转为.a和.h 然后再使用了swig封装为了python的包

2006-08-16 19:56:29     琳琳的小狗(99352246)
那编写上是不是会简洁电?

2006-08-16 19:57:48 limodou(8582874)
我对pyswt没有深入了解, 只是看过网站上的例子,好象不复杂

2006-08-16 19:54:53 ミaBBISh♂(47641788)
这里所说的文档是指哪个方面,程序的开发文档还是类似业务中需要的各种报表阿~等等商业文件?

2006-08-16 19:56:27 limodou(8582874)
这里的文档都包括了 reportlab可以生成专业的报表,还有一种xml格式的rml语言专门用来设定模板和格式

2006-08-16 19:58:10 ミaBBISh♂(47641788)
所说的这些文档的包是内置在了Python还是另外的项目?

2006-08-16 19:58:32 limodou(8582874)
绝大部分是第三方的

2006-08-16 19:59:06 ミaBBISh♂(47641788)
这样的第三方是用Python语言来做还是使用其它语言作提供Python的接口?

2006-08-16 19:59:14 lugger(1801093)
问几个概念哈:库 包 模块 文件 有什么包含关系不

2006-08-16 19:59:41 limodou(8582874)
包与库可以认为是一样的. 模块一般是指单个文件. 不过广义上也可以认为同库,包是一样的. 一个包一般是有许多的文件. 还可以有目录

2006-08-16 20:30:24 头太晕(2538288)
老大,你说IronPython已经被M$做为.net的一部分了。从哪里体现出来的?

2006-08-16 20:30:48 limodou(8582874)
这是从别人那看到的, 因为我不用.net

2006-08-16 20:31:33 头太晕(2538288)
我好像也在别人那里看到过。但是我安装了最新的vs2005,没有发现IronPython的踪影。

2006-08-16 20:32:04 limodou(8582874)
因为IronPython还不是正式版,我想只是一个计划

2006-08-16 20:30:52 鳄鱼(121262440)
什么是rails方式的框架 ?

2006-08-16 20:31:12 limodou(8582874)
rails应该就是快速开发吧, 具体没有考证过

2006-08-16 20:31:39 ミaBBISh♂(47641788)
快速开发体现在什么地方呢?

2006-08-16 20:32:45 limodou(8582874)
象rails一般都提供一些工具, 用它们可以快速地创建整个开发环境, 还可以自动创建数据库表, 再加上可以自动生成管理界面之类的, 因此以前许多工作都通过自动化或工具完成了

2006-08-16 20:33:24 ミaBBISh♂(47641788)
类似于ORM的功能?

2006-08-16 20:33:44 limodou(8582874)
ORM只是其中一块, 不过的确是rails的一块重要的内容, 上面介绍的django, turbogears, pylons都有orm模块

2006-08-16 20:34:12 鳄鱼(121262440)
我觉得django的admin还比较死板

2006-08-16 20:34:36 limodou(8582874)
admin功能只能是通用性的,不可能适用所有要求, 对于特殊的要求仍然需要自已开发, 但对于开发的初期会方便进行测试

2006-08-16 20:35:30 鳄鱼(121262440)
可以在命令行下测试,这点比较好

2006-08-16 20:34:31 ミaBBISh♂(47641788)
ORM的全称是很么?

2006-08-16 20:35:46 limodou(8582874)
ORM=Object relational Mapping  对象关系映射 现在python中有几种ORM模块,如SQLObject, SQLAlchemy 还有就是django的ORM,还有其它一些用的人少一些  其中SQLAlchemy比较火

2006-08-16 20:36:51 ミaBBISh♂(47641788)
ORM可以具体反映到很多种范围上吧~

2006-08-16 20:37:23 limodou(8582874)
什么很多范围?

2006-08-16 20:38:20 ミaBBISh♂(47641788)
对象关系映射 这种概念可以应用到很多地方吧

2006-08-16 20:39:12 limodou(8582874)
“对象关系映射 这种概念可以应用到很多地方吧”你指什么地方呢?

2006-08-16 20:40:38 ミaBBISh♂(47641788)
比如针对某一个行业上的对象关系影射的实现,例如销售、制造等具体到行业中的应用

2006-08-16 20:43:23 limodou(8582874)
ORM只是一个数据库的记录到对象的一个映射 当然你可以封装一些逻辑在里面 如果你学过django,其实也是这样做的. 可以在定义Model时,同时也把一些处理写进去



2006-08-16 20:38:20 苍山负雪(16972384)
python在科学计算方面的应用有多大?有没有什么有影响力的产品?

2006-08-16 20:38:49 limodou(8582874)
科学计算我了解得不多



2006-08-16 20:39:37     琳琳的小狗(99352246)
StacklessPython,是什么东西?  能具体点吗?这个版本的python有什么特殊意义? 使用上是不是和标准版的一样?

2006-08-16 20:40:00 limodou(8582874)
StacklessPython是一个python的运行版本 它对于调用作了一些优化,运行速度要比python快一些 stacklesspython和标准python没有什么区别,不过我的确没有用过,有些游戏中好象用的就是stacklesspython  这个版本主要是运行速度快


2006-08-16 20:39:48 Jason(9590876)
limodou,什么时候有时间把python库翻译了

2006-08-16 20:40:49 limodou(8582874)
翻译库是一件非常浩大的工程,我建议还是好好学习英文


2006-08-16 20:40:05 lugger(1801093)
在“python应用领域”一章中,像GUI应用 网络应用中讲的是python语言提供的库,那web开发中的zope/plone cherrypy是些什么?是用他们做web开发吗?

2006-08-16 20:41:09 limodou(8582874)
zope/plone即算是库,又算是平台. plone本身就是一个强大的内容管理系统,但你仍然可以对它进行定制开发. cherrypy可以算是一个开发库和运行库


2006-08-16 21:20:36 lugger(1801093)
有什么工具可以方便缩排(winxp下)

2006-08-16 21:21:08 ミaBBISh♂(47641788)
PyDev 就可以自动缩进`

2006-08-16 21:23:41 limodou(8582874)
一般的编辑工具都支持缩近,比如 NewEdit


2006-08-16 21:20:36 lugger(1801093)
怎么理解对象系统

2006-08-16 21:20:56 limodou(8582874)
一般你体会不到 比如定义一个类 class A:pass , 这样你就定义了一个classic class . 如果你定义 class A(object):pass 这样你定义了一个new style class

2006-08-16 21:21:49 ミaBBISh♂(47641788)
两种分别有什么区别呢?

2006-08-16 21:22:05 limodou(8582874)
new style class要求你定义的类的基类是new style class或object. 有些功能只在new style class中可以使用,如property, metaclass等

2006-08-16 21:22:43     琳琳的小狗(99352246)
就是有基类的形式?

2006-08-16 21:22:43 limodou(8582874)
还有一些特殊的类方法也只能在new style class中使用

2006-08-16 21:23:06 limodou(8582874)
对,目前你定义一个new style class必须要有一个基类 要么是object要么是其它的new style class

2006-08-16 21:23:41     琳琳的小狗(99352246)
知道了,这个能提供更多的功能吧?

2006-08-16 21:23:49 limodou(8582874)
是的

2006-08-16 21:24:13 limodou(8582874)
不过new style class相对高级,不知道也无所谓

2006-08-16 21:24:41 limodou(8582874)
python提供的功能很多 但并不表示你需要都了解

2006-08-16 21:24:49     琳琳的小狗(99352246)
就是说不影响我们日常的编写吧,不过还是了解下好

2006-08-16 21:24:56 limodou(8582874)
是的

2006-08-16 21:25:10 limodou(8582874)
比如python中还可以进行FP(函数式编程) 象lambda, map, reduce, filter等都是这些东西

2006-08-16 21:25:35     琳琳的小狗(99352246)
听说那几个支持FP的内置方法要取消了?

2006-08-16 21:25:51 limodou(8582874)
没有,还留下来了

2006-08-16 21:26:10 ミaBBISh♂(47641788)
什么是 函数式编程 阿

2006-08-16 21:26:39 limodou(8582874)
就是函数是第一性的,不建议有语句. 具体的在IBM的开发网上有篇文章可以看一下  http://www-128.ibm.com/developerworks/cn/linux/sdk/python/charm-10/index.html

2006-08-16 21:27:22 ミaBBISh♂(47641788)
那那不是也要用语句去封装函数阿

2006-08-16 21:28:08 limodou(8582874)
全部是函数运行,这是从lisp中学来的

-- Zhang Yunfeng

http;//vib.hit.edu.cn

http://my.opera.com/zhangyunfeng

1.2. 反馈

  • stacklesspython并非为提高性能而生的(如果程序不使用 continuation 的功能的话可能比cpython还稍慢一点),他主要是将cpython放在c stack里的 frame 移到内存中进行管理,好处是能提供了完整的 continuation 的功能,一开始的版本直接支持 continuation ,但后来作者发现 continuation 太复杂没几个人能玩得转(包括他自己), 所以现在的版本并没有直接提供对 continuation 的支持,而是提供一些建立在这个基础之上的一套微线程(microthread,类似的东西还要叫 cooperation coroutine 的,据我的理解没啥区别)。主要应用应该是在 游戏、仿真等面向agent的应用 和 异步网络编程中。很多需要使用多线程的情况都可以考虑用stacklesspython来做,可以自己处理调度,没有了临界资源访问的问题,缺点是还不能利用多处理器的好处。作者以投入pypy橡木的开发中,貌似stacklesspython在pypy中将会焕发崭新的生命力,期待 :) [huangyi/[email protected]]