成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我為什么要學習Python

開發(fā) 后端
這里我不討論Python的一些有用的庫或者框架,只從語言本身,最小支持的情況下談論這門語言本身。語言的發(fā)展都是越來越接近Lisp,這也是這門語言偉大的原因。

引言:學習Python近兩年,談談我對于Python的一點小理解,也從一些方面談談自己微薄的想法,也就是我為什么學習Python

這里我不討論Python的一些有用的庫或者框架,只從語言本身,最小支持的情況下談論這門語言本身。

語言的發(fā)展都是越來越接近Lisp,這也是這門語言偉大的原因。

下面我羅列一下我學習Python的原因:

一.多編程范式

Python是一門多范式的編程語言,所謂的過程式,面向對象和函數(shù)式的結合。

大部分人接觸編程語言都是從過程式開始的,原因是因為過程式的程序方式與計算機運行方式是統(tǒng)一的,指令序列與運行過程是統(tǒng)一的

如典型的C,我也是從C開始學習的,過程式的程序語言設計編寫程序較為簡單,但是符合人機交互思考方式。

Python雖然是一門面向對象語言,就連“ ”(空格)也可以看做是一個對象,但是Python勝任過程式是沒有問題的。

如不需要使用類的靜態(tài)方法:

  1. def a_plus_b(a,b):  
  2.   return a+b 

python在設計的時候將其當做一門面向對象的方式編寫,且不說面向對象給軟件設計帶來的一些革命等,在python這樣的動態(tài)語言中面向對象有一個亮點就是Duck typing(鴨子類型)

關于鴨子類型,就是說,如果我認為一個抽象的東西會游泳會“嘎嘎”叫,我就可以把它當做鴨子。

  1. def use_duck( Duck ):  
  2.   Duck.swim()  
  3.   Duck.gaga()  
  4. class Duck:  
  5.   def swim(self):  
  6.     ...  
  7.   def gaga(self):  
  8.     ... 

如果這樣使用

  1. little_duck Duck()  
  2. use_duck( little_duck ) 

關于Duck類,你可以給他取任何的名字,或者繼承它取另一個名字,只需要實現(xiàn) swim() gaga() 你就可以把它當做鴨子

關于鴨子類型,很多人不理解為什么不需要提供一個接口來規(guī)定鴨子的行為,我既不支持也不反對,我的觀點是這樣的:

1.對于參數(shù)的檢查,不符合動態(tài)語言的特性

2.提供了接口規(guī)范,那就不是鴨子類型了,直接叫多態(tài)得了

#p#

關于python支持的函數(shù)式編程

首先是lambda 演算

函數(shù)式編程的定義是將函數(shù)看做是變量一樣的待遇,變量在程序中最簡單的有什么待遇呢

1.可以賦值

2.可以作為參數(shù)

3.可以改變值(Erlang例外)

4.且不說生命周期了和作用域了

λ演算背后蘊含著計算機可計算性的深厚知識,lambda也是圖靈模型,是停機問題的一個否定答案。不僅僅是一個匿名函數(shù)那樣簡單

關于lambda 演算,看看這個程序做了什么

  1. map(lambda n:2*n,[1,2,3,4,5]) 

1.lambda n:2*n 本身作為一個匿名函數(shù)

2.lambda 本身作為一個參數(shù)傳入 map()函數(shù) ,這也就是說我的高階函數(shù),可以將函數(shù)變身看成是一個變量作為參數(shù)傳遞,這也是它作為函數(shù)受到的高等待遇

關于賦值和改變值,兩種方式:

1.f = fun() 不改變函數(shù)狀態(tài),只改變名稱,但是說明函數(shù)是可以賦值的

2.可以使用閉包作為改變函數(shù)的狀態(tài)方式,或者使用裝飾器來完成函數(shù)狀態(tài)改變

函數(shù)式編程的使用也可以提高程序的可讀性和減少代碼,而且能夠清晰的表達函數(shù)的功能,如MapReduce就是來自函數(shù)式編程的思

Map(func,List)

作用是將func 作用于List中的每一個元素

以剛才的例子舉例

  1. map(lambda n:2*n,[1,2,3,4,5]) 

此函數(shù)返回:[2,4,6,8,10]

重要的是在于知道這樣的方式帶給我們的清晰的設計方式

當然函數(shù)式編程不是那么幾句話就說完的,理解函數(shù)式編程的核心是理解 λ演算

#p#

二.一些有意思的特性

惰性計算:

看看完成一個斐波那契數(shù)列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()就可以產(chǎn)生一個斐波那契值,而函數(shù)的內部狀態(tài)是由迭代對象存儲的

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

協(xié)程:

協(xié)程也是一個基于yield的概念,主要的模式是微線程的協(xié)作式工作模式:

  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() 

協(xié)程帶來的好處是可以直接調度你的線程,這也是它為什么叫做協(xié)程而不是線程的原因,線程屬于搶占式并發(fā),協(xié)程屬于協(xié)作式并發(fā)

三.動態(tài)語言帶來的好處

從程序設計帶來的快感(我相信只有熱愛這方面的人才有的感覺)來說,動態(tài)語言,比如python,節(jié)約了更多的時間可以用來陪女朋友或者老婆,或者老公

當然,作為互聯(lián)網(wǎng)時代快速開發(fā)來說,趕鴨子上線,也是《黑客與畫家》上面介紹的,快速開發(fā)很重要,當然需要符合這方面的需求

動態(tài)語言的CPU密集型運算必然比不過C/C++

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

原文鏈接:http://www.cnblogs.com/Bozh/archive/2012/06/18/2553224.html

責任編輯:張偉 來源: 張博(Boz)的博客
相關推薦

2021-03-08 11:28:59

人工智能深度學習Python

2017-04-05 18:10:05

R語言開發(fā)Ross

2015-05-12 11:04:42

Java EE學習Java EE

2018-08-02 15:24:05

RPCJava微服務

2010-01-22 15:14:37

學習C++

2010-01-20 14:03:12

C++程序

2022-12-13 09:59:25

計算遷移

2022-11-28 08:50:13

2019-11-15 13:10:17

潘石屹Python語言

2015-05-25 15:31:56

C語言學習和使用 C 語言

2010-01-21 10:34:08

SUN-JAVA認證

2019-05-14 11:15:51

微軟員工上市公司

2020-03-03 15:31:47

ReactVue前端

2019-04-22 14:20:08

區(qū)塊鏈數(shù)字貨幣比特幣

2021-01-27 22:31:36

HTML編程Web

2020-08-10 15:48:01

Python輪子計算

2009-09-29 16:24:11

2017-05-19 16:40:41

AndroidKotlin開發(fā)者

2013-03-12 14:30:09

Ubuntu操作系統(tǒng)

2015-08-06 10:14:15

造輪子facebook
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩精品一区二区三区免费视频 | av大片| 欧美精品1区2区 | 国产区在线 | 成人a在线观看 | 国产精品久久国产精品 | 麻豆av片 | 国产欧美日韩在线一区 | 懂色av色香蕉一区二区蜜桃 | 欧美jizzhd精品欧美巨大免费 | 91精品国产91久久久久久最新 | 国产乱码高清区二区三区在线 | 国产精品日韩高清伦字幕搜索 | 国产一区二区三区在线看 | 国产电影一区二区在线观看 | 99爱在线免费观看 | 日韩精品人成在线播放 | 久久成人激情 | 中文字幕不卡视频在线观看 | 在线欧美 | 中文av在线播放 | 日韩一区二区三区在线看 | 2018天天干天天操 | 国产欧美精品区一区二区三区 | 在线观看午夜视频 | 狠狠操狠狠干 | 国产综合久久 | 国产一区二区在线免费观看 | 国产激情91久久精品导航 | 国产成人精品免高潮在线观看 | 日韩毛片 | 亚洲精品在线视频 | 一区二区蜜桃 | 一级欧美黄色片 | 黄色一级免费观看 | 99精品欧美一区二区蜜桃免费 | 亚洲精品一区二区三区丝袜 | 97精品超碰一区二区三区 | 久久黄视频 | 天天摸天天干 | 中文日韩在线 |