原创作者: andyyehoo
阅读:10561次
评论: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教学的一门语言,但是确实是编写中小型软件和系统的好工具。
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 楼 APieceOfRedCloth 2013-08-27 18:07
6 楼 elvisharcher 2013-03-30 14:51
5 楼 hipop 2012-11-12 17:23
4 楼 lqefn 2010-12-23 21:31
3 楼 qingant 2009-08-01 07:46
如果一个方法有必要是私有的,那么程序员不去调用它就好了。
2 楼 phyeas 2009-04-23 14:03
我记得是:
默认公开
_ 保护
__ 私有
1 楼 奎木狼 2008-12-14 15:43