二.一些有意思的特性

惰性计算:

看看完成一个斐波那契数列python 可以怎么做:

  1. >>> def fib():  
  2.     a , b = 0 ,1 
  3.     while 1:  
  4.         yield b  
  5.         a , b = b ,a+b          
  6. >>> f = fib() 

实际上由yield 生成了一个可迭代对象,每次调用

f.next()就可以产生一个斐波那契值,而函数的内部状态是由迭代对象存储的

至于返回一个可迭代对象,如果需要确定迭代到多少位,可以使用 itertools.islice

协程:

协程也是一个基于yield的概念,主要的模式是微线程的协作式工作模式:

  1. def coroutine(func):  
  2.      def ret():  
  3.          f = func()  
  4.          f.next()  
  5.          return f  
  6.      return ret   
  7.  @coroutine 
  8.  def consumer():  
  9.      print "Wait to getting a task" 
  10.      while 1:  
  11.          n = (yield)  
  12.          print "Got %s",n    
  13.  import time  
  14.  def producer():  
  15.      c = consumer()  
  16.      while 1:  
  17.          time.sleep(1)  
  18.          print "Send a task to consumer" 
  19.          c.send("task")    
  20.  if __name__ == "__main__":  
  21.      producer() 

协程带来的好处是可以直接调度你的线程,这也是它为什么叫做协程而不是线程的原因,线程属于抢占式并发,协程属于协作式并发

三.动态语言带来的好处

从程序设计带来的快感(我相信只有热爱这方面的人才有的感觉)来说,动态语言,比如python,节约了更多的时间可以用来陪女朋友或者老婆,或者老公

当然,作为互联网时代快速开发来说,赶鸭子上线,也是《黑客与画家》上面介绍的,快速开发很重要,当然需要符合这方面的需求

动态语言的CPU密集型运算必然比不过C/C++

总之:人生苦短,我用Python。

 


评论关闭