什么是pythonic?

昨天的技术沙龙上,清风大妈Zoom.Quiet给大家提了个“很基础很基本”的问题,什么是pythonic?

自己没特地做过功课,但pythonic这个词不陌生,应该见过几次,但是要说具体是什么,确实很空白。说起python,我首先想起来的是其很让人愉悦的编码体验,一些很常用的封装让人感觉很“惊艳”,比如说,for line in open(‘file’):ooxxooxx,替代了C++、Java等里面的readline,更不会让人产生在C里面打开文件时候那种恐惧感;还有一些很贴心的细节就是,高度对象化,比如说gtk的TreeViewModel,可以直接送给SQL cursor的execute,直接把用户界面的数据写入到数据库里面去……因为都是list。

像这样的“愉悦感”,就是我理解的pythonic。昨天会场上有人的答案是:“简洁,优雅,高效”,获得比较多人的认可(得到了奖品带大妈签名的《可爱的Python》一本)。

回来后看了看华蟒用户组的首页,呃,很明显写着嘛:申明 pythonic == “大道至简“,也八九不离十了。

这两天也是这个邮件组里面有人讨论实现小时候铅笔盒上的九九乘法表,最获得大家认可的答案是:

print "".join([('%s*%s=%s%s' % (y,x,x*y,'\n' if x==y else '\t')) for x in range(1,10) for y in range(1,10) if x >= y])

看了犯晕,这很明显跟python给人“惊艳感”的做法背道而驰的,但怎么会这么多人认可呢……同时想起咋们群主“逆”说一直没搞懂的一句算素数的python:

print reduce(lambda l,y:not 0 in map(lambda x:y % x, l) and l+[y] or l,xrange(2,1000), [] )

这叫做pythonic?既不简洁,又不优雅,更不高效,充其量作为一个脑力游戏,还不如玩玩数独!

玩小聪明一直都是天朝人的传统,人家孔乙己还会“茴”字的N个写法呢,但这类小聪明,着实应该远离python。

文章分类 Python 标签: , ,
3 comments on “什么是pythonic?
  1. 小老虎说道:

    很久没来你的站了,感觉变了好多哦,呵呵~~~~~

  2. daryl说道:

    其实乘法表那个不错啊,还挺符合思维习惯的。这里我说的是从功能出发的思维习惯。不过对于好多程序员来说,因为已经习惯了C这类imperative language了,往往第一时间的反应是把功能翻译成CPU能识别的“算法”,反而不习惯这种从功能出发的直接描述方式了。

  3. limbo说道:

    我到是觉得python最有魅力的地方,用少的代码干多的事

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*