posts - 256, comments - 1314, trackbacks - 41, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

IronPython的第四块鳞片

Posted on 2004-09-27 21:57 FantasySoft 阅读(897) 评论(2)  编辑 收藏 所属分类: All About SoftSharp IronPython
        尽管每天都会关注Jim的blog,关注IronPython的Mail List,但是这几天来都没有什么收获,不仅Jim的blog都快发霉了,Mail List这两三天竟然也没有新的Mail,让我好生失望。看来一切的东西都得靠自己去摸索了,原本想拿着IronPython的源代码研读一番,怎奈天生愚钝,《Code Reading》那本好书又没有带在身上,看代码如同在蜀道行走一般。看来从Python本身入手,并穿插与IronPython的比较或许更加切合我的实际水平了。
        今天先来说一点Python与其他语言不同的地方。Python也和Java一样,号称Everything is Object,但是两者在概念上却是有很大的不同。首先,Java所谓的Everythins is Object就是所有的代码都必须以类的形式出现,而Python则不是,Python可以定义单独定义function,但是每个function却是实实在在的Object。大家看以下的代码:    
>>>def HelloWorld():
     
""" Say "Hello,World"
         Say "Hello,World" again """

>>> print HelloWorld.__doc__         # 这样的调用方式不就是对一个对象中的属性进行访问吗?
        以上仅仅是定义了一个空的函数,但是函数体中包含了该函数的document。一个函数的document string必须出现在函数名称后面的第一行,也就是在函数名与document string之间不能有任何的代码;除此之外,必须使用三个"来定义作为document string的范围。实质上每一个function被定义之后,都会包含许多built-in的属性,__doc__就是其中的一个,以上的代码在解释执行的时候,就会将两个"""之间的字符串赋给__doc__属性。除了__doc__属性之外,一个function还有很多其他的built-in属性,我们可以通过dir(funtion name)来获得。
        以上代码在Python下是没有问题,但是IronPython却让我很是失望,它在Interactive的模式下只能够支持单行的document string,如果像以上的多行的方式,则会陷入一个死循环,直至抛出System. IndexOutOfRangeException: Index was outside the bounds of the array。但是如果将以上代码存为.py文件,通过IronPythonConsole *.py的方式来执行,则是没有问题的。看来IronPython的Interactive方式还存在着很多的bug。同时,通过dir(function name)也可以发现IronPython中的built-in属性并没有与Python完全兼容,缺少了很多属性,同时也增加很多新的属性:如'Call','Equals', 'GetHashCode', 'GetMethod', 'GetType', 'ToString'等。
        今天就先到这里了,大家会不会觉得有点无趣呢?看来我得检讨一下,然后再来点能吸引眼球的了。
        Any proposal is welcome.Thanks!

Feedback

#1楼    回复  引用  查看    

2004-09-28 09:14 by runmin      
是IronPython不支持"""吧?

#2楼    回复  引用  查看    

2004-09-28 09:20 by FantasySoft      
支持啊,只是在Interactive的方式下,只能将doc string写在一行而已。但是在.py中,则没有限制了。这是IronPythonConsole本身的一个bug。

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2004-10-14 17:10 编辑过
 
另存  打印
最新IT新闻:
· 56被关一月 危机的是整个视频业
· 李开复:中文搜索是谷歌战略核心
· 《星际争霸2》新图:黑暗圣堂武士Zeratul
· FriendFeed介绍
· 微软在台北发布新色鼠标产品