首頁  >  文章  >  後端開發  >  Python學習【第一篇】Python簡介

Python學習【第一篇】Python簡介

高洛峰
高洛峰原創
2017-02-13 17:18:301370瀏覽
  1. Python介紹

  2. 發展史

  3. Python 2 or 3?

1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。  

最新的TIOBE排行榜,Python追趕PHP佔據第五, Python崇尚優美、清晰、簡單,是一個優秀且廣泛使用的語言。

Python可應用於眾多領域,如:資料分析、元件整合、網路服務、影像處理、數值計算和科學計算等眾多領域。目前業界幾乎所有大中型網路企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。網路公司廣泛使用Python來做的事一般有:自動化維運、自動化測試、大數據分析、爬蟲、Web 等。

目前Python主要應用領域:

雲端運算: 雲端運算最熱門的語言, 典型應用OpenStack

  • WEB開發: 眾多優秀的WEB框架,眾多大型網站皆為Pytbox豆瓣。 。 。 ,典型WEB框架有Django

  • 科學運算、人工智慧: 典型庫NumPy, SciPy, Matplotlib, Enthought librarys,pandas

  • 系統運作: 運維人員必備語言量化交易,金融分析,在金融工程領域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作為動態語言的Python,語言結構清晰簡單,庫豐富,成熟穩定,科學計算和統計分析都很高效,生產效率遠高於c,c++,java,尤其擅長策略回測

  • 圖形GUI: PyQT, WxPython,TkInter

  •  

    Python與其它常見語言對比
  • C 和Python、Java、C#等

    碼   C機語言:  程式碼直接在機器上執行一條指令控制CPU工作
    其他語言: 程式碼編譯得到字節碼,虛擬機器執行字節碼並轉換成機器碼再後在處理器上執行

Python 和C  Python這門語言是由C開發而來

  對於使用:Python的類別庫齊全並且使用簡潔,如果要實現同樣的功能,Python 10行程式碼可以解決,C可能就需要100行甚至更多.

  對於速度:高級語言在運行速度上無法與C相比

Python 和Java、C#等

  對於使用:Linux原裝Python,其他語言沒有;以上幾門語言都有非常豐富的類庫支援

  對於速度:Python在速度上可能稍顯色遜所以,Python和其他語言沒有什麼本質區別,其他差異在於:擅長某個領域、人才豐富、先入為主。

 


python是一門動態解釋性的強類型定義語言

 

優點:

Python的定位是“簡單”、“明確”、“簡單”,所以Python易懂,初學者學Python,不但入門容易,而且將來深入下去,可以編寫那些非常非常複雜的程式。

開發效率非常高,Python有非常強大的第三方庫,基本上你想透過電腦實現任何功能,Python官方庫裡都有相應的模組進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大幅降低開發週期,避免重複造輪子。

高級語言————當你用Python語言編寫程式的時候,你無需考慮諸如如何管理你的程式使用的記憶體一類的底層細節
  1. 可移植性————由於它的開源本質,Python已經被移植在許多平台上(經過改變使它能夠工作在不同平台上)。如果你小心地避免使用依賴系統的特性,那麼你的所有Python程式無需修改就幾乎可以在市場上所有的系統平台上運行
  2. 可擴展性————如果你需要你的一段關鍵程式碼運行得更快或希望某些演算法不公開,你可以把你的部分程式用C或C++編寫,然後在你的Python程式中使用它們。
  3. 可嵌入性————你可以把Python嵌入你的C/C++程序,從而向你的程式使用者提供腳本功能。
  4. 缺點:
    1. 速度慢,Python 的運行速度相比C語言慢很多,跟JAVA相比也要慢一些,因為Python是解釋型語言,你的程式碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程式是執行前直接編譯成CPU能執行的機器碼,所以非常快。但其實這裡所指的運作速度慢在多數情況下使用者是無法直接感知到的,必須藉助測試工具才能體現出來。

    2. 代碼不能加密,因為PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認為這算是一個缺點,如果你的項目要求源代碼必須是加密的,那你一開始就不應該用Python來去實現。

    3. 線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程式設計語言解釋器用於同步線程的工具,使得任何時刻只有一個執行緒在執行,Python的執行緒是作業系統的原生執行緒。在Linux上為pthread,在Windows上為Win thread,完全由作業系統調度執行緒的執行。一個python解釋器進程內有一條主線程,以及多條用戶程式的執行線程。即使在多核心CPU平台上,由於GIL的存在,所以禁止多執行緒的並行執行。關於這個問題的折衷解決方法,我們在以後線程和進程章節裡再進行詳細探討。

     

    Python的種類 

     

    當我們寫Python程式碼時,我們得到的是一個包含Python程式碼的以.py為副檔名的文字檔。要運行程式碼,就需要Python解釋器去執行.py檔。

    由於整個Python語言從規範到解釋器都是開源的,所以理論上,只要水平夠高,任何人都可以編寫Python解釋器來執行Python程式碼(當然難度很高)。事實上,確實存在多種Python解釋器。

    CPython

    當我們從Python官方網站下載並安裝好Python 2.7後,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發的,所以叫CPython。在命令列下運行python就是啟動CPython解釋器。

    CPython是使用最廣的Python解釋器。教程的所有程式碼也都在CPython下執行。

    IPython

    IPython是基於CPython之上的一個互動式解釋器,也就是說,IPython只是在互動方式上有所增強,但是執行Python程式碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但核心其實都是呼叫了IE。

    CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。

    PyPy

    PyPy是另一個Python解釋器,它的目標是執行速度。 PyPy採用JIT技術,對Python程式碼進行動態編譯,所以可以顯著提高Python程式碼的執行速度。

    絕大部分Python程式碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python程式碼在兩種解釋器下執行可能會有不同的結果。如果你的程式碼要放到PyPy下執行,就需要了解PyPy和CPython的不同點。

    Jython

    Jython是運行在Java平台上的Python解釋器,可以直接把Python程式碼編譯成Java字節碼執行。

    IronPython

    IronPython和Jython類似,只不過IronPython是運行在微軟.Net平台上的Python解釋器,可以直接把Python程式碼編譯成.Net的字節碼。

    小結

    Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平台交互,最好的方法不是用Jython或IronPython,而是透過網路呼叫來交互,確保各程式之間的獨立性。

     

    二、Python發展史 

     

  • 1989年,為了打發聖誕節假期,Guido開始寫Python語言的編譯器。 Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創造一種C和shell之間,功能全面,易學易用,可拓展的語言。

  • 1991年,第一個Python編譯器誕生。它是用C語言實現的,並且能夠呼叫C語言的函式庫檔。從一出生,Python已經具有了:類,函數,異常處理,包含表和字典在內的核心資料類型,以及模組為基礎的拓展系統。

  • Granddaddy of Python web frameworks, Zope 1 was released in 1999

  • Python 1.0 - January 1994 增加了 2.0 - October 16, 2000,加入了內存回收機制,構成了現在Python語言框架的基礎

  • Python 2.4 - November 30, 2004, 同年目前最受歡迎的WEB框架Django 誕生

  • Pytept 2. - October 1, 2008

  • Python 2.7 - 2010 年7 月3 日

  • 2014 年11 月,宣布將支援Python 2.7 到2020 年,並重申不會發布2.8 版本,因為用戶將在盡快遷移到

  • Python 3.0 - 2008年12月3日
  • Python 3.1 - 2009年6月27日
  • Python 3.22011年月9月2日2012年9月
  • Python 3.4 - 2014年3月16日
  • Python 3.5 - 2015年9月13日
  • 總結:Python 2.x是遺產,Python 3.x是該語言的現在和未來
  • Python 3.0 於 2008 年發布。最終的 2.x 版本 2.7 於 2010 年中期發布,並聲明

    對此生命週期終止版本的擴展支援。此後 2.x 分支將不會再發布新的主要版本。 3.x 正在積極開發中,並且已經發布了五年多的穩定版本,包括 2012 年的 3.3 版、2014 年的 3.4 版和 2015 年的 3.5 版。這意味著,例如,所有最近的標準庫改進都是僅
預設在 Python 3.x 中可用。

Guido van Rossum(Python 語言的原始創建者)決定正確清理 Python 2.x,而不是像2.x 系列中的新版本。最顯著的改進是更好的 Unicode 支援(預設所有文字字串都是 Unicode)以及更清晰的位元組/Unicode 分離。

此外,核心語言的幾個方面(例如print 和exec 是語句,整數使用Floor pision)已被調整為更容易讓新手學習並且與該語言的其餘部分更加一致,並且舊的缺陷已被刪除(例如,所有類別現在都是新樣式的,「range()」會傳回一個記憶體高效的可迭代,而不是2.x 中的列表)。 

 

py2與3的詳細差異

PRINT IS A FUNCTION

該語句已替換為 print() 函數,並使用關鍵字參數取代舊語句(PEP 3105)大部分的特殊語法。範例:

Old: print "The answer is", 2*2 New: print("The answer is", 2*2)
Old: print x, # Trailing comma suppresses newline New: print(x, end=" ") # Appends a space instead of a newline
Old: print # Prints a newline
New: print() # You must call the function!
Old: print >>sys.stderr, "fatal error" New: print("fatal error", file=sys.stderr)
Old: print (x, y) # prints repr((x, y))
New: print((x, y)) # Not the same as print(x, y)!


您也可以自訂項目之間的分隔符,例如:

print("There are <", 2**32, "> possibilities!", sep=""

ALL IS UNICODE NOW

(A, *REST,B)=RANGE(5)

<strong>>>> a,*rest,b = range(5)
>>> a,rest,b
(0, [1, 2, 3], 4)
</strong>

某些庫改名了



新名稱隊列    



_winreg


_winreg


ConfigParser



configparser



copy_reg



隊列





SocketServer


標記庫



_標記庫



repr



repr



test.test_support


test.support


 


 

 

 


 

 


 


還有誰不支援PYTHON3?


尚不支援 Python 3 的一個流行模組是 Twisted(用於網路和其他應用程式)。大多數

積極維護的庫都有人致力於 3.x 支援。對於某些程式庫來說,它比其他程式庫更重要:例如,Twisted 主要專注於生產伺服器,其中支援舊版的 Python 很重要,更不用說支援包含對該語言進行重大更改的新版本了。 (Twisted 是
主要軟體包的一個主要示例,其中移植到 3.x 絕非易事


更多Python學習【第一篇】Python簡介相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn