How to pythonic——引子(连载)

我们在刚开始接触python的时候都会发现python是个比较简单的语言,慢慢地会发现python其实也不简单。为什么?因为我们刚开始用python的时候带着C-Style语言的潜意识会发现python也可以完美的的实现,但是真正的精通python应该是能写一手pythonic的优雅语句,首先让我先举个例子:

现在我想把0-9中的偶数挑出来并放到一个数组中,让我们先看看在C\C++中如何实现:

1 void getEvenNo(int a[]) {
2 for (int i = 0; i < 10; i++)
3 if (i % 2 == 0) {
4 a[i / 2] = i;
5 }
6 }

初学者可能使用python完成这个功能是 一个c风格的python也许就出现了:

def geteven():
number = range(10)
size = len(number)
even = []
i = 0
while i < size:
if i % 2 == 0:
even.append(i)
i=+1
pass

return even

这段代码确实很慢..
很多初学者都会写出类似这样的代码

pythonic的代码应该是什么样的呢:

[i for i in range(10) if i % 2 == 0]
或:
[i for i in range(0,10,2)]

就是这个,我们再熟练python的过程中务必要慢慢发现python作为动态语言所具有与c,java这样静态语言所不具有的特点,尤其是在我们开始将getattr() setattr()这些自省函数深入到程序代码设计之中时。

就此,我们将展开一系列的pythonic的积累与学习,也希望有更多的朋友能一起研究如何将python的特点使用最大化,成为真正的python高手




posted @ 2012-03-04 20:15  代码商人  阅读(1370)  评论(6编辑  收藏  举报