原创作者: andyyehoo   阅读:10567次   评论:7条   更新时间:2011-06-01    
学习python一小段时间了,太高层次的话题就不说了,层次放低一点,就说说在实际编程中,体会到的Python和JAVA的区别。学习不久,认识有限,希望大家多指正,而我也会不断完善这篇文章。

Python的代码和Java有着相当的类似度,学习一段时间后,感觉有一种亲切感,所以姑且称呼它为Java的堂弟罢。

虽然Dive Into Python中,声明了Everything is Object,可是使用过程中,我的体会就是Python并非真正的OO,类只不过是比模块小一级的方法组织单位罢了,而非真正的类。从OO的学术角度来说,Python只能打个60分,众多的OO特性,更像是为了OO而凑上去的。

1)动态类型语言,使得单纯从方法接口看出,参数和返回结果是什么类型对象,当然也就毫无所谓的接口之说。
2)粗糙的默认公开和__私有方法,没有保护和包内可见的概念
3)令人生厌,无处不在的self
            所有的方法,除了静态方法和类方法,都要以self作为第一个参数。这也就算了,对于成员变量和自己方法的应用,也要加个self. 。 程序小的话,我宁愿直接用module的方法好了,就像python的n个builtin模块一样
4)不方便的log
            虽然有类似log4j的东西,但是log的初始化和配置是在程序中进行,不太方便,我也习惯了用print。而在Django这样大的项目中,居然看不到log,是我没找到地方呢?还是真的没log?迷惑中。

优点

Python相对于Java最大的优势,是灵活和简洁。同样的功能,Python中1行的代码,Java往往要用3到5行才能完成。

1)灵活的字符串,方便提供的超长字符串定义
2)简洁,多行,可注释的正则表达式
3)动态语言特性,对AJAX的配合如鱼得水,因为它和JavaScript的OO有着异曲同工之妙
4)丰富的第三方类库,Python有相当的历史了,网站的copyright是1990-2006,在国外已经有丰富的应用基础,常用的第三方类库应有尽有。


关于开发工具,目前用得最好的是PyDev。已经习惯了不断的代码重构,缺乏了这种的支持,感觉很不顺手,而由于Python的动态特性,PyDev的重构还是很不尽如人意,这点让我很怀疑,作为团队开发时,Python的可行性。

总之,Pthon作为一门动态强类型语言,在OO的严谨,和过程式的随意中,取得了一种很好的平衡。虽然不能作为OO教学的一门语言,但是确实是编写中小型软件和系统的好工具。
评论 共 7 条 请登录后发表评论
7 楼 APieceOfRedCloth 2013-08-27 18:07
java是95年发布,python是91年发布,python是堂哥才对。
6 楼 elvisharcher 2013-03-30 14:51
在这里强词夺理有什么意思呢,Perl系的脚本语言就是比C系在OO方面有先天的差距。发挥好自身的优势就好了。
5 楼 hipop 2012-11-12 17:23
Python的OO就行一坨XX
4 楼 lqefn 2010-12-23 21:31
我觉得python才是真正的OO,对象不一定要Class Instance才叫对象。
3 楼 qingant 2009-08-01 07:46
python tutorial里面说了,__这样对“私有方法”是为了防止程序员不经意的错误。
如果一个方法有必要是私有的,那么程序员不去调用它就好了。
2 楼 phyeas 2009-04-23 14:03
2)粗糙的默认公开和__私有方法,没有保护和包内可见的概念
我记得是:
默认公开
_   保护
__  私有
1 楼 奎木狼 2008-12-14 15:43
Everything is Object,并不是说Every class is Object。

发表评论

您还没有登录,请您登录后再发表评论

文章信息

Global site tag (gtag.js) - Google Analytics