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高手