Python的發展歷史及其前景


  Python的發展歷史

  1989年,吉姆·范羅蘇姆為打發時間,決定為當時正構思的一個新的腳本語言編寫一個解釋器。作為派森的狂熱粉絲,他以Python命名該項目,使用C進行開發。

  1991年發布Python的第一個版本。此時Python已經具有了類,函數,異常處理,包含表和詞典在內的核心數據類型,以及模塊為基礎的拓展系統。

  1991-1994年,Python增加了lambda,map,filter and reduce

  1999年,Python的web框架之祖——Zope 1發布。

  2000年,加入了內存回收機制,構成了現在Python語言框架的基礎

  2004年,web框架 Django 誕生

  2006年,Python 2.5

  2008年,Python 2.6

  2010年,Python 2.7

  2008年,Python 3.0

  2009年,Python 3.1

  2011年,Python 3.2

  2012年,Python 3.3

  2014年,Python 3.4

  2015年,Python 3.5

  2016年,Python 3.6

  2018年,Python 3.7

 

  Python的優缺點

  優點

  1. Python程序簡單易懂,初學者入門容易。
  2. 開發效率高,有強大的第三方庫,可以在基礎庫的基礎上再開發,降低開發周期。
  3. 使用高級語言,編寫程序無需考慮底層細節。
  4. 可移植性。
  5. 可擴展性,部分程序可用C或C++編寫。
  6. 可嵌入性,可以把Python嵌入C或C++程序中。

  缺點

  1. 代碼不能加密
  2. 多線程支持差

 

  Python的應用領域及前景

  數據分析:GWPY

  雲計算:OpenStack

  WEB開發:Django、flask、tomado

  科學運算、人工智能:NumPy、SciPy、Matplotlib、Enthought librarys、pandas

  系統運維:slatstack、Ansible

  圖形開發::wxPython、PyQT、TKinter

 

  Python 2.x 與 3.x 的區別

1.性能

  Py3.0運行 pystone benchmark的速度比Py2.5慢30%。Guido認為Py3.0有極大的優化空間,在字符串和整形操作上可以取得很好的優化結果。

  Py3.1性能比Py2.5慢15%,還有很大的提升空間。

  2.編碼

  Py3.X源碼文件默認使用utf-8編碼

  3.語法

1)去除了<>,全部改用!=

2)去除``,全部改用repr()

3)關鍵詞加入as 和with,還有True,False,None

4)整型除法返回浮點數,要得到整型結果,請使用//

5)加入nonlocal語句。使用noclocal x可以直接指派外圍(非全局)變量

6)去除print語句,加入print()函數實現相同的功能。同樣的還有 exec語句,已經改為exec()函數

7)改變了順序操作符的行為,例如x<y,當x和y類型不匹配時拋出TypeError而不是返回隨即的 bool值

8)輸入函數改變了,刪除了raw_input,用input代替

9)去除元組參數解包。不能def(a, (b, c)):pass這樣定義函數了

10)新式的8進制字變量,相應地修改了oct()函數。

11)增加了 2進制字面量和bin()函數

12)擴展的可迭代解包。在Py3.X 里,a, b, *rest = seq和 *rest, a = seq都是合法的,只要求兩點:rest是list對象和seq是可迭代的。

13)新的super(),可以不再給super()傳參數

14)新的metaclass語法

15)支持class decorator。用法與函數decorator一樣

4. 字符串和字節串

現在字符串只有str一種類型,但它跟2.x版本的unicode幾乎一樣。

5.數據類型

1)Py3.X去除了long類型,現在只有一種整型——int,但它的行為就像2.X版本的long

2)新增了bytes類型,對應於2.X版本的八位串

3)dict的.keys()、.items 和.values()方法返回迭代器,而之前的iterkeys()等函數都被廢棄。同時去掉的還有dict.has_key(),用in替代

6.面向對象  

1)引入抽象基類(Abstraact Base Classes,ABCs)。

2)容器類和迭代器類被ABCs化,所以cellections模塊里的類型比Py2.5多了很多

3)迭代器的next()方法改名為__next__(),並增加內置函數next(),用以調用迭代器的__next__()方法

4)增加了@abstractmethod和 @abstractproperty兩個 decorator,編寫抽象方法(屬性)更加方便

7.異常

1)所以異常都從 BaseException繼承,並刪除了StardardError

2)去除了異常類的序列行為和.message屬性

3)用 raise Exception(args)代替 raise Exception, args語法

4)捕獲異常的語法改變,引入了as關鍵字來標識異常實例

5)異常鏈,因為__context__在3.0a1版本中沒有實現

8.模塊變動

1)移除了cPickle模塊,可以使用pickle模塊代替。最終我們將會有一個透明高效的模塊。

2)移除了imageop模塊

3)移除了 audiodev, Bastion, bsddb185, exceptions, linuxaudiodev, md5, MimeWriter, mimify, popen2,
rexec, sets, sha, stringold, strop, sunaudiodev, timing和xmllib模塊

4)移除了bsddb模塊

5)移除了new模塊

6)os.tmpnam()和os.tmpfile()函數被移動到tmpfile模塊下

7)tokenize模塊現在使用bytes工作。主要的入口點不再是generate_tokens,而是 tokenize.tokenize()

9.其它  

1)xrange() 改名為range(),要想使用range()獲得一個list,必須顯式調用

2)bytes對象不能hash,也不支持 b.lower()、b.strip()和b.split()方法,但對於后兩者可以使用 b.strip(b'\n\t\r \f')和b.split(b' ')來達到相同目的

3)zip()、map()和filter()都返回迭代器。而apply()、 callable()、coerce()、 execfile()、reduce()和reload()函數都被去除了現在可以使用hasattr()來替換 callable(). hasattr()的語法如:hasattr(string, '__name__')

4)string.letters和相關的.lowercase和.uppercase被去除,改用string.ascii_letters 等

5)如果x < y的不能比較,拋出TypeError異常。2.x版本是返回偽隨機布爾值的

6)__getslice__系列成員被廢棄。a[i:j]根據上下文轉換為a.__getitem__(slice(I, j))或 __setitem__和__delitem__調用

7)file類被廢棄

 

 

  Python相關職業要求及薪資待遇

  

 

 

 

 

Python開發環境的配置安裝

  1. 進入官網,選擇合適版本下載

     

     

  2. 打開Python-3.7.4.exe,勾選復選框並進行安裝

     

     

  3. 安裝完成

     

     

  4. 在電腦上搜索Python

     

     

  5. 測試

     

     

  6. 安裝成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM