`
andyyehoo
  • 浏览: 71174 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Java的堂弟——Python初体验

阅读更多
学习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教学的一门语言,但是确实是编写中小型软件和系统的好工具。
分享到:
评论
18 楼 Nicholas_Ding 2007-05-23  
怎么能说 Python 是 Java 的堂弟呢,Python 的年纪应该当上老哥了。
17 楼 huangyiiiiii 2007-05-23  
"""
所有的方法,除了静态方法和类方法,都要以self作为第一个参数。
"""
静态方法不传这个参数,类方法传类对象,实例方法传实例对象。
关于 self 参数我的理解:
http://codeplayer.blogspot.com/2006/12/python-method-function-descriptor.html
16 楼 fujohnwang 2007-04-28  
动态语言我也只能让他们做作SysAdmin的工作...
15 楼 simohayha 2007-04-24  
andyyehoo 写道

差不多,不过其实用什么语言,都会下意识的缩进排版了,即使编译器没要求,无论是从美观还是可读性出发,这个都是有必要的

呵呵,可是python是强制缩进的。特别是tab缩进和空格缩进还是不一样的。
14 楼 andyyehoo 2007-04-24  
ozzzzzz 写道

而这个帖子没有提缩进,说明楼主已经是被java训练好了的。虽然python的写作风格有很多,但是外表靠起来都一样,不同的是内在的思路。这一点同c和java差别很大。


差不多,不过其实用什么语言,都会下意识的缩进排版了,即使编译器没要求,无论是从美观还是可读性出发,这个都是有必要的

ozzzzzz 写道

貌似MIT选择python代替LISP这个也是一个理由。不过这个确实有待探讨。而倒是觉得python支持命令式的编程,也支持oo风格,还可以FP,同时也可以做元语言,这倒是一个原因。毕竟用LISP体会命令式和OO都不容易。


感觉python确实是很方便的一门语言,很容易入门,最少拿来做计算器的,都多方便呢,呵呵
13 楼 potian 2007-04-20  
不是貌似,而是用来代替SICP的,Harold Abelson亲自设计的新课程

不看好

http://courses.csail.mit.edu/6.01/
12 楼 ozzzzzz 2007-04-20  
simohayha 写道
楼主可以看下python的哲学

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.

俺也挺喜欢缩进的,估计就像是o6z老大所说的,被java训练好了,呵呵。

MIT貌似只是开了一门新课,是用python教学的,嘿嘿。而且还只是试验阶段。

python还有一个就是开源社区非常强大,就像pypy就非常的不错。


据我一个MIT的朋友说是要课程调整,不是开一门新课。不过具体会如何,也说不清,还要看具体的发展。而且国外用python做教学语言的大学确实很多,这大概是因为国外unix盛行的缘故。可以说python和unix是天生的一对,就差用一个python的shell了。
11 楼 simohayha 2007-04-20  
楼主可以看下python的哲学

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.

俺也挺喜欢缩进的,估计就像是o6z老大所说的,被java训练好了,呵呵。

MIT貌似只是开了一门新课,是用python教学的,嘿嘿。而且还只是试验阶段。

python还有一个就是开源社区非常强大,就像pypy就非常的不错。

10 楼 ozzzzzz 2007-04-20  
python的哲学思想我觉得更加类似c,或者说是程序员的语言。只不过python的程序员是90年代之后的程序员,而c代表的是70年代程序员。
而这个帖子没有提缩进,说明楼主已经是被java训练好了的。虽然python的写作风格有很多,但是外表靠起来都一样,不同的是内在的思路。这一点同c和java差别很大。
关于self这个东西,说不好究竟是什么,不过倒是可以反应python的一些哲学倾向。
另外没有涉及的一点是据说python做元语言很合适,从他入门学习语言学很好。貌似MIT选择python代替LISP这个也是一个理由。不过这个确实有待探讨。而倒是觉得python支持命令式的编程,也支持oo风格,还可以FP,同时也可以做元语言,这倒是一个原因。毕竟用LISP体会命令式和OO都不容易。
9 楼 icetortoise 2007-04-20  
嗯,python支持多种不同的编程风格。在实际使用的时候很少会受到某种编程风格的制约。

选择自己感觉最舒服的方式来写程序,很快你就会发现自然而然的在编写算法相关的模块时你会用很多的fp programming,而具体模拟现实中的某个应用的模块则会使用很多的oo programming.
8 楼 simohayha 2007-04-20  
hurricane1026 写道
python我的的感觉是完全可以不用oo的方式编程,反而很舒服。或者说python根本不应该作为java相关的语言,说起来,strong type语言和weak type语言怎么会有血缘关系?
呵呵,python也是强类型语言。

PS;很喜欢python 的FP.
7 楼 刑天战士 2007-04-19  
你把python当作java的堂弟,当然有些东西觉得别扭。python这种scripting language,要用新的思想来考虑。比如要考虑context的切换等等。
6 楼 wzgme 2007-04-19  
写python代码的时候,要的就是随意的感觉,随着思路一气呵成。

用来做C++项目的脚本,是很好的。比如我现在用的S-GeMS。
5 楼 hfeeqi 2007-04-17  
引用
虽然Dive Into Python中,声明了Everything is Object,可是使用过程中,我的体会就是Python并非真正的OO,类只不过是比模块小一级的方法组织单位罢了,而非真正的类。从OO的学术角度来说,Python只能打个60分,众多的OO特性,更像是为了OO而凑上去的。

你是身在此山中,不知真面目。要知道,在python中模块也是一个对象呀
4 楼 simohayha 2007-04-10  
icetortoise 写道
oo本来就只是python的可选路径之一,不同的应用需要不同的paradigm。

python怎么也说不上是java的堂弟。最多是远房表哥。
恩,同意,就像dive into python里面说的,python编程的时候你要 Data-centric programming。
3 楼 icetortoise 2007-04-10  
oo本来就只是python的可选路径之一,不同的应用需要不同的paradigm。

python怎么也说不上是java的堂弟。最多是远房表哥。
2 楼 limodou 2007-04-10  
只想说python不是java。
1 楼 simohayha 2007-04-10  
呵呵,俺也补充一下

1 很喜欢 python中的 FP,尽管python并不是纯粹的FP.

2 编辑器,还可以选择vi或者emacs,比如豆瓣基本都是用VI开发的.

3 python中类之上还有metaclass.

4 和c良好的结合.

相关推荐

    七上Unit2ThisismysisterSectionB1(1a-1d).ppt

    在学习过程中,学生需要了解家庭成员之间的血缘关系,例如儿子(son)、堂兄/堂姐/堂弟/堂妹(cousin)、祖父/外祖父(grandpa)、母亲(mom)和阿姨/姑母(aunt)等。此外,还复习了一些基本的词汇,如祖母...

    堂弟结婚请假条.docx

    根据提供的文件信息,我们可以从中提炼出以下几个主要的知识点: ### 1. **婚假的相关规定** - **法定婚假**:按照国家规定,达到法定结婚年龄(女性20周岁,男性22周岁)的夫妻,可以享受3天的婚假。...

    一件令我难忘的事作文.doc

    5. **教训与反思**:堂弟的行为让活动功亏一篑,但这个挫折也让大家学到了一个道理——做事要周全考虑,尽量避免可能出现的问题。这是生活中的重要教训,对于培养决策能力和预见性具有积极意义。 6. **道德教育**:...

    新建 家谱关系逻辑.docx

    这里涉及到了Java编程语言中的条件语句(`if...else`)来确定不同家庭成员之间的关系,并将结果展示在文本框中。接下来,我们将详细解释这些代码片段所代表的家庭关系逻辑。 ### 一、核心逻辑解析 #### 1. 关系...

    广东省佛山市顺德区均安中学高中语文 唐宋散文 春夜宴诸从弟桃园序教案

    本文主要涉及的是高中语文教学中的古代散文部分,具体聚焦于唐宋时期的散文经典——李白的《春夜宴诸从弟桃园序》。这篇文章是李白在春夜桃李园宴请堂弟们时所作的序文,体现了李白独特的文情诗意和人格魅力。 1. *...

    北师大版小升初连词and,or,but的用法练习题及答案解析.docx

    第11题:"I like taking photos, but my cousin doesn’t like it." 这里的"but"表明了喜好上的对比,我喜欢拍照,而我的堂弟不喜欢。 第13题:"Lucy, don’t turn off the computer before closing all programs, ...

    史记李将军列传知识点学习教案.pptx

    李广的堂弟李蔡也是武骑常侍,两人同为文帝的随扈。李广因其勇猛和武艺,文帝感叹他生不逢时,如果在高祖刘邦时期,成为万户侯并非难事。 课文还描绘了李广与匈奴作战的一个场景。一次匈奴大举入侵上郡,李广的随从...

    欧也妮葛朗台中学生读后感800字2021年5篇.docx

    此外,读后感中还提到了小说揭示的社会现象——金钱至上的价值观如何腐蚀人际关系,以及当时社会中人们对财富的盲目追求。这种批判性的思考反映了巴尔扎克对19世纪法国社会的深刻洞察。 总结来说,《欧也妮·葛朗台...

    欧也妮葛朗台中学生读后感800字5篇_1.docx

    小说主要讲述了19世纪法国乡村的一个富有商人——葛朗台及其家庭的故事,尤其是聚焦于他的女儿欧也妮的情感经历和她对金钱观念的转变。 葛朗台是小说中的核心人物,他是一位极端吝啬的守财奴,对金钱有着近乎病态的...

    初中语文文学讨论美文荐读现实一种

    6. 孩童视角:通过皮皮的眼睛,我们看到了他对世界的好奇心和直观感受,如雨滴的不同声音,以及他对堂弟的互动,展示出孩童纯真而又直接的行动方式。 7. 社会现实:故事发生的背景——雨天,不仅仅是自然现象,也是...

    实习生工作辞职申请报告2021年.docx

    在我入职之初,我满怀激情,希望能在这个团队中找到属于自己的位置,能够真正融入这个大家庭。然而,实际的情况却与我当初的期望有所出入。我发现自己并不适合这份实习工作,无论是工作内容还是工作环境,都没有达到...

    昂利•彭加勒的研究论文.doc

    5. **个人背景**:论文可能还介绍了彭加勒的家庭背景,他的父亲莱昂·彭加勒是医学教授,家族成员在不同领域都有显著成就,特别是他的堂弟雷蒙·彭加勒,曾担任法国总统。 6. **成长经历**:彭加勒的童年并不顺利,...

    Deta_Cache:缓存缓存服务器

    这个项目今赠给堂弟罗瑶林先生。20200327 :fire: 100,000〜4,000,000 QPS,使用二进制搜索技术/《 VPCS架构》德塔公司开源缓存服务器存储上亿级量子碎片,带有并发映射表的微型Java线程小型安全HTTP json高速缓存...

    唐高祖平阳昭公主 [萧景,字子昭,高祖从父弟也阅读附答案] .docx

    - **初仕经历**: - 任晋安王国左常侍,后升迁为永宁令,因其政绩卓越而受到赞誉。 - 永嘉太守范述曾高度评价萧景的政绩,并公开宣布支持他处理政务。 - **关键职位**: - 宁朔将军、行南兖州军事。 - 封吴平县...

    【小学生作文】小学生最难忘的一个人作文600字【五篇】.doc

    - 第三位难忘的人物是堂弟,通过他对植物的无意识伤害,作者体验到了生命的脆弱,学会了尊重每一个生命。这教育我们对待事物要有同理心,尊重所有生物。 4. **家庭的关爱**: - 最后一篇作文是关于父亲的,父亲的...

    企业实习生辞职申请书.docx

    4. **自我评估**:在信中,实习生应诚实评估自己在实习过程中的体验和成长,这有助于上司理解你的处境和感受。 5. **推荐替代人选**:如果可能,提供一个合适的替代者,如文中提到的堂弟,可以显示你对团队的关心和...

    2020中考英语一轮复习教材梳理第13练八下Unit3_4含解析202003261200

    8. return 【解析】句意:我的堂弟借了我的钱,但是不归还。return 是动词,意为“归还”,在助动词 doesn't 后面用原形,根据句意及单词提示,故填 return。9. explain 【解析】句意:你能向我解释一下游戏规则吗?...

    .net 无限分类 构建树

    //1.包括源代码, 数据库, 可以直接运行的. //2.vs2005,sqlserver2005,数据库用户名:sa,...//3.主要看Default2.aspx //4....!! ...对于搞程序的人来说, 无限分类是必过之关, 这个都不会, 真不叫个程序员了.... |--堂弟 |--堂妹

    实习生辞职申请书范文.pdf

    - 实习生建议推荐其堂弟接手这份工作,显示出对工作的负责态度,也体现了团队精神。 8. **感激与祝福**: - 实习生对公司的感激之情溢于言表,对领导和同事的祝福也体现出良好的职业道德。 通过这份辞职申请书,...

    欧也妮葛朗台中小学读书笔记800字5篇_1.docx

    《欧也妮·葛朗台》是法国作家巴尔扎克的代表作,描绘了19世纪初法国社会的生活画面,尤其是对人性的深刻剖析和对金钱至上的社会现象的批判,使其成为世界文学宝库中的一颗璀璨明珠。书中的主要人物葛朗台和欧也妮·...

Global site tag (gtag.js) - Google Analytics