Python2.x的第一印象

十一月 17th, 2010 632 留下评论 阅读评论

来百度实习整3周了,很幸运,没有从事C++的工作而是写Python,一来是因为自从对Java抛出橄榄枝后就对C++的语法和OO方面各种BS,当然做算法除外,二来有幸能在实习阶段学习自己一直很想学的Python,的确是一件好事。Python也接触几周了,爽和不爽都有那么一点,也谈不上哪方面更占上风,毕竟骨子里已经被Java各种渗透了,熟悉新语言总会带着一点比较,有点偏见了。

因为本来比较熟的是Java和PHP,可以说基本都是以做Web为擅长的语言。Java丰富多彩,但基于JVM这个复杂的东西让它很不适合开发一个方便快捷的程序,尤其是偏桌面的,PHP就不用说了,完全的Web语言,没有浏览器就无用武之地了。相对于这个组合,C++其实是一个很好的补充,作为桌面开发,但因为以上说的原因就算了,还有C#,上过课用过一段时间,功能很强大但是很微软,.NET神马的还是算了。于是Python似乎是一个很好的补充,它简单方便,双击就能运行,Web也很强,而且像百度、Google这样的公司都大量使用Python,对以后找工作也很有帮助。

  • 语法

Python最有名的莫过于强制缩进的语法风格了,这点我很欣赏,在Eclipse我手写Java就和format后的代码几乎无异,就是长句换行麻烦了点。稍微比较不习惯的就是经典的大括号被去掉了,据说是为了去除括号的N种风格,现在看到函数的结尾,尤其是一个类的结尾就没有一点标志(不然会有个‘}’嘛),太不爽了,当一个类长了的时候,而且当一个文件中有2个类的时候,很难找到类到底在哪儿结束。

  • 关键字

Python的关键字有点别出心裁的感觉,try catch它来个try except,else if变成elif(貌似有的语言也这样),this改为self(PHP倒也是这样),def(喜欢其他脚本语言的function)。我有个想法,最好ISO出个编程语言关键字统一版本,关键字取名一样,怎么编译和解释是每个语言的各自的事,这样多好啊,切换一门语言的时候都不会太累。

  • 命名规范

不知道是不是Python接触的还不够多,总感觉Python没有一套很明确的命名规范,既不是Java的驼峰式,也不是C的下划线隔开式,也不是微软的大写开头式,import导入的很多也是小写打头的,很容易混乱,然后变量取名不能随便取,像list、dict这些type类型,导入time包后的time,都会发生程序异常。这一点也因为Python的变量很随意,不像强语言,也不像PHP那样带$符号。

  • OOP

其实OOP接触的还不多,毕竟还没怎么实践,但是从书上看来,的确令我不爽。Python的OO是不符合OO标准的,它有C++的多重继承,对private的修饰如此纠结(函数名前加下划线),还有没有new关键字…。还有是对field没有明确申明,你可以实例化任何一个类,然后给它添加任何你自己的field属性,比较无语…还有貌似类内部引用自己类的静态变量居然要用类名来索引,如果改类名的话,代码要大动。

  • pythonic

感觉Python主义者都会很强调这个,Python说不定还真是因为有这个信仰一样的精神指导才能发展如此迅猛,基本大多数条目我都赞同,并且都是放之四海皆准的编程真理,也推荐ITer能好好参悟之,但惟独一条弃用tab键缩进而改用4个空格,理由很强势,不同os或文本编辑器对tab解释不同导致代码眼观起来差别很大,的确如此,不过敲一个键变成敲四个键,还是每行代码都要打的语法规定,对于Python这样极力于精简的语言来说,算是个什么事呢?

pythonic的条目见:http://blog.11034.org/2010-08/first_day_overtime.html

好像都在说我对Python的不好的感觉,呵呵,Python的好处自然不言而喻啦,开头也有说过一点,各种方便各种库的支持,无所不能,Java代码十几行Python往往一个API就搞定,当然脚本语言一般都这样。不过听串叔一席话:Java怎么也是有一个大公司在支撑的15年+的语言,Python的核心毕竟只是少数人虽然年份也久了但总感觉是新语言,这点不知道会不会影响Python的良好发展。

Categories: Python, 百度 标签:
  1. 十一月 26th, 2010 19:43

    实习威武啊。。
    求问python是用于客户端编程的么?

    • Python可用于任何地方的编程,个人理解强于脚本处理和Web方面

icon_wink.gif icon_neutral.gif icon_mad.gif icon_twisted.gif icon_smile.gif icon_eek.gif icon_sad.gif icon_rolleyes.gif icon_razz.gif icon_redface.gif icon_surprised.gif icon_mrgreen.gif icon_lol.gif icon_idea.gif icon_biggrin.gif icon_evil.gif icon_cry.gif icon_cool.gif icon_arrow.gif icon_confused.gif icon_question.gif icon_exclaim.gif