Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2011-09-13) python一周感言

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

从开始学python到现在正好一周,终于可以开始动手再重做网站了。在这几天里,看了以下内容:

  1. python的语法,一天

  2. 一个web开发框架: pylons,两天

  3. 一个orm框架: sqlalchemy,两天

  4. 一个view层模板语言: mako,两天

  5. 学习使用IntelliJ idea作为开发工具,一天

做网站就是mvc,orm这些套路,各个语言都差不多,只要了解了其原理和常用写法,就可以动手了。至于细节部分,用到的时候再去查资料研究。

python的语法相当简单,简单到你只需要用一天的时间,就能基本上看懂别人的代码。可以说,这是我学过的各种编程语言中,上手最快的一种了。然而简单并不代表功能弱,python提供的很多语言特性,可以实现很强大的功能。

学Python,只需要记住两点:

  1. python的哲学:简单优于复杂,显式优于隐式。

如果解决问题的方式有多种,python只用其中最好的那一种。

  1. 一切都是"namespace”:包括package, module, class, object

Python的面向对象,更像javascript,而不像java, c++或者ruby

下面从做网站的角度谈谈python。

python中目前有这几个比较有名的web框架:django, turbogears, pylons, web.py等。首先可以肯定的是,它们没有一个能赶上ruby on rails,并且有着数量级的差距(这让我感觉有点意外,我高估了python)。其中django历史悠久,使用人数众多,但它的所有东西基本上都是自己开发的。turbogears和pylons则是选用了各个开源的部件,按自己的规则拼在一起。web.py的特点是小巧而简洁。

我最终选择了pylons,主要是因为它的网站做的好,介绍也很好,给了我们很大的选择。我喜欢自由。如果有一天我觉得turbogears不错,想要转过去,应该也不需要重写太多的东西。

python中的orm好像并不多,看了一下就两三个,SQLObject和Sqlchemy,还有django自己的orm。我选用了python界目前最流行功能最强大文档写得最好的sqlchemy。这个东西其实还是有点复杂的,特别是刚入门时,因为它跟java里的orm声明方式差别太大了,很难下手。不过可以看出,它的功能真是非常强大,远超java中的各orm,并且入门之后,其复杂性就比hibernate之流要小很多。

python中模板层倒挺多的。有django自己的模板,还有mako, genshi,还有一些我忘了。可惜的是,我最爱的haml,在python中实现得并不好,用起来很别扭,完全没有在ror下的那种畅快。最终无奈放弃了它,使用了mako。选用mako,是因为它也是出自sqlchemy的作者之手,功能强大而方便,文档详细而丰富,还算是八分满意。

编辑器,选择了intellij idea。开始时使用的是eclipse+pydev,不知怎么回事,经常发生启动后就卡住,折腾半个小时也没弄好的情况,实在受不了了。idea其实很受好评,它的界面没有eclipse好看,但是在细节上做得很用心,用起来很顺手。我重新调整了它的字体等,快捷键还用的是eclipse那一套,感觉也还不错。据说在很多方面,idea都已经超过了eclipse,这些只有用过的人才知道。目前我使用到的python及html的编辑,都是idea要做得好一些。如果eclipse将要推出的E4没有太大的进步的话,我要考虑一直使用idea了。

最后一点是关于修改文件后重启服务器的问题。我还以为python在这一块会做得很好(像ror那样),结果有点失望。虽然修改后不需要重启服务器,但是它会有3到5秒的restarting时间,还是很不方便。不知道是不是我的方式不对(我用的是paster serve -reload),如果有更好的方式,请告诉我。

comments powered by Disqus