`
andyyehoo
  • 浏览: 71344 次
  • 性别: 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天的婚假。...

    新建 家谱关系逻辑.docx

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

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

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

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

    这部作品不仅仅是一则关于金钱与人性冲突的寓言,它更是十九世纪初法国社会风貌和时代精神的缩影。在这个故事中,我们看到了葛朗台这一典型守财奴的形象,以及欧也妮·葛朗台所代表的纯洁与善良,还有那在金钱面前...

    北师大版小升初连词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, ...

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

    记得在一篇作文中,我读到过一个关于烤地瓜的故事,它不仅是一段令人难忘的童年趣事,更是一次关于团队合作、安全意识、环境选择和道德教育的深刻体验。 故事开始于一个阳光明媚的大年初三,我和堂兄弟们兴高采烈地...

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

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

    春夜宴从弟桃花园序省级公开课PPT学习教案.pptx

    在宴集的氛围中,李白对古代文化的引用——如曹丕的诗句和《古诗十九首》中的篇章——进一步展现了唐代文人深厚的文化底蕴和对传统诗文的熟练运用。 文中提到的“羽觞”,指的是古人宴会中使用的精美酒器,而“琼筵...

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

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

    Deta_Cache:缓存缓存服务器

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

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

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

    5鸿门宴(定).ppt

    在担任太史令一职时,因替李陵辩护而遭遇人生巨变,承受了宫刑的悲剧,但即便如此,他仍然未放弃完成自己的史学巨著——《史记》。《史记》不仅为我们留下了汉代以前长达三千年历史的详细记录,而且还因其独特的叙述...

    人教版语文八年级下册课外古诗词10首[宣贯].ppt

    诗中“岂不罹凝寒,松柏有本性”两句,与孔子所言“岁寒,然后知松柏之后凋也”有异曲同工之妙,都借松柏之喻表达了一种君子人格的追求——即便在逆境之中,也要保持坚韧不拔的品格。通过强烈的对比和反衬手法,诗人...

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

    小作者通过自己堂弟对植物的无意伤害,体会到了生命的脆弱。这个故事告诉我们,应该培养一颗同理心,学会尊重和爱护每一个生命。这对于孩子们树立正确的生态观念和价值取向具有指导意义。 家庭是人生的第一个社会...

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

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

    .net 无限分类 构建树

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

    口算24点(2.4版)

    4)我的一个堂弟玩了这个游戏二个星期, 竟然达到65秒(5题),唉,看来我老了,呵呵! 5)这个游戏本来是为讨女孩子欢心才编的。如果你是女孩子,又玩得开心的话,不妨写email到kenguong@21cn.com和我联系! 祝你玩得...

    口算24点(中英文提示版)

    4)我的一个堂弟玩了这个游戏二个星期, 竟然达到65秒(5题),唉,看来我老了,呵呵! 5)这个游戏本来是为讨女孩子欢心才编的。如果你是女孩子,又玩得开心的话,不妨写email到kenguong@21cn.com和我联系! 祝你玩得...

    口算24点(2.5版)

    4)我的一个堂弟玩了这个游戏二个星期, 竟然达到65秒(5题),唉,看来我老了,呵呵! 5)这个游戏本来是为讨女孩子欢心才编的。如果你是女孩子,又玩得开心的话,不妨写email到kenguong@21cn.com和我联系! 祝你玩得...

Global site tag (gtag.js) - Google Analytics