python唯一的缺點就是,在目前現有的實現方式下,與c和c++這類編譯語言相比,python的執行速度還不夠快。教程後面將對實現方式的概念進行詳細闡述。簡而言之,目前python的標準實現方式是將源**的語句編譯(或者說是轉換)為位元組碼的形式,之後再將位元組碼解發布來。由於位元組碼是一種與平台無關的格式,位元組碼具有可移植性。然而,因為python沒有將**編譯成底層的二進位制**(例如,intel晶元的指令),一些python程式將會比像c這樣的完全編譯語言慢一些。
程式的型別決定了是否需要關注程式的執行速度。python已經優化過很多次,並且python**在絕大多數應用領域執行的速度也足夠快。此外,一旦使用python指令碼做一些「現實」世界的事情,程式實際上是以c語言的速度執行的,例如,處理某乙個檔案或構建乙個使用者圖形介面(gui)。因為在這樣的任務中,python**會立即傳送至python直譯器內部已經編譯的c**。究其根源,python開發速度帶來的效益往往比執行速度帶來的損失更為重要,特別是在現代計算機的處理速度情況下。
即使當今cpu的處理速度很快,在一些應用領域仍然需要優化程式的執行速度。例如,數值計算和動畫,常常需要其核心數值處理單元至少以c語言的速度(或更快)執行。如果在以上領域工作,通過分離一部分需要優化速度的應用,將其轉換為編譯好的擴充套件,並在整個系統中使用python指令碼將這部分應用連線起來,仍然可以使用python。
我們將不會再談論這個擴充套件的問題,但這卻是乙個我們先前所提到過的python作為控制語言角色的鮮活例子。numpy是採用雙語言混編策略的乙個重要例子:作為乙個python的數值計算擴充套件,numpy將python變為乙個高效並簡單易用的數值計算程式設計工具。你也許不會在自己的python工作中採用這種擴充套件的方式程式設計,但是如果需要的話,python也是能夠提供這種強大的優化機制的。
總體來說,python從廣泛的使用者基礎和活躍的開發者社群中受益不少。由於python有近19年的發展歷史並得到了廣泛的應用,python保持了穩定並具有活力的發展趨勢。除了個人使用者使用之外,python也被一些公司應用於商業產品的開發上。例如:
•流行的p2p檔案分享系統bitjorrent是乙個python程式。
•eve online這款大型多人網路遊戲(massively multiplayer online game,mmog),廣泛地使用python。
•maya這款強大的整合化3d建模和動畫系統,提供了乙個python指令碼程式設計api。
•intel、cisco、hewlett-packard、seagate、qualcomm和ibm使用python進行硬體測試。
•industrial light & magic、pixar等公司使用python製作動畫電影。
•在經濟市場**方面,jpmorgan chase、ubs、getco和citadel使用python。
•nasa、los alamos、fermilab、jpl等使用python實現科學計算任務。
•irobot使用python開發了商業機械人真空吸塵器。
•esri在其流行的gis地圖產品中使用python作為終端使用者的定製工具。
•nsa在加密和智慧型分析中使用python。
•ironport電子郵件伺服器產品中使用了超過100萬行的python**實現其作業。
•olpc使用python建立其使用者介面和動作模組。
還有許多方面都有python的身影。如今貫穿所有使用python的公司的唯一共同思路也許就是:python在所有的應用領域幾乎無所不能。python的通用性使其幾乎能夠應用於任何場合,而不是只能在一處使用。實際上,我們這樣說也不為過:無論是短期策略任務(例如,測試或系統管理),還是長期戰略上的產品開發,python已經證明它是無所不能的。
python系列教程3
宣告 在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥 但它的知識點還是講...
python系列教程 python系列教程
宣告 在人工智慧技術教學期間,不少學生向我提一些python相關的問題,所以為了讓同學們掌握更多擴充套件知識更好的理解人工智慧技術,我讓助理負責分享這套python系列教程,希望能幫到大家!由於這套python教程不是要由所寫,所以不如我的人工智慧技術教學風趣幽默,學起來比較枯燥 但它的知識點還是講...
Go 系列教程 3 變數
變數指定了某儲存單元 memory location 的名稱,該儲存單元會儲存特定型別的值。在 go 中,有多種語法用於宣告變數。var name type package main import fmt func main my age is 0 變數可以賦值為本型別的任何值。上一程式中的 age...