Python簡介python
Python(英國發音:/ˈpaɪθən/ 美國發音:/ˈpaɪθɑːn/),是一種普遍使用的高級編程語言,屬於通用型編程語言,由吉多·範羅蘇姆創造,初版發佈於1991年。能夠視之爲一種改良(加入一些其餘編程語言的優勢,如面向對象)的 LISP。做爲一種解釋型語言,Python 的設計哲學強調代碼的可讀性和簡潔的語法(尤爲是使用空格縮進劃分代碼塊,而非使用大括號或者關鍵詞)。相比於C++或Java,Python讓開發者可以用更少的代碼表達想法。無論是小型仍是大型程序,該語言都試圖讓程序的結構清晰明瞭。linux
與Scheme、Ruby、Perl、Tcl 等動態類型編程語言同樣,Python擁有動態類型系統和垃圾回收功能,可以自動管理內存使用,而且支持多種編程範式,包括面向對象、命令式、函數式和過程式編程。其自己擁有一個巨大而普遍的標準庫。
Python虛擬機自己幾乎能夠在全部的操做系統中運行。Python的正式解釋器CPython是用 C語言編寫的、是一個由社區驅動的自由軟件,目前由Python軟件基金會管理。android
Python的創始人爲吉多·範羅蘇姆。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。之因此選中Python做爲程序的名字,是由於他是BBC電視劇——蒙提·派森的飛行馬戲團的愛好者。ABC是由吉多參加設計的一種教學語言。就吉多本人看來,ABC這種語言很是優美和強大,是專門爲非專業程序員設計的。可是ABC語言並無成功,究其緣由,吉多認爲是非開放形成的。
吉多決心在Python中避免這一錯誤,並獲取了很是好的效果,完美結合了C和其餘一些語言。
就這樣,Python在吉多手中誕生了。實際上,第一個實現是在Mac機上。能夠說,Python是從ABC發展起來,主要受到了Modula-3(另外一種至關優美且強大的語言,爲小型團體所設計的)的影響。而且結合了Unix shell和C的習慣。
目前吉多仍然是Python的主要開發者,決定整個Python語言的發展方向。Python社區常常稱呼他是仁慈的獨裁者。程序員
Python的設計哲學是「優雅」、「明確」、「簡單」。Python開發者的哲學是「用一種方法,最好是隻有一種方法來作一件事」,也所以它和擁有明顯我的風格的其餘語言很不同。在設計Python語言時,若是面臨多種選擇,Python開發者通常會拒絕花俏的語法,而選擇明確沒有或者不多有歧義的語法。這些準則被稱爲「Python格言」。在Python解釋器內運行import this能夠得到完整的列表:正則表達式
Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 Type "copyright", "credits" or "license()" for more information. >>> import this The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than *right* now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
注:以上內容均摘自維基百科,地址:https://zh.wikipedia.org/wiki/Python.算法
*編譯器是把源程序的每一條語句都翻譯成機器語言,並保存成二進制文件(便可執行的目標代碼),翻譯與執行是分開的,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;
*而解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行(即對源程序的翻譯與執行是一次性完成的,不生成可存儲的目標代碼),因此運行速度是不如編譯後的程序運行的快的. 這是由於計算機不能直接認識並執行咱們寫的語句,它只能認識機器語言(是二進制的形式)。shell
*兩者背後的最大區別是:對編譯執行而言,運行時的控制權在用戶程序;對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;數據庫
編譯型
優勢:編譯器通常會有預編譯的過程對代碼進行優化。由於編譯只作一次,運行時不須要編譯,因此編譯型語言的程序執行效率高。能夠脫離語言環境獨立運行。
缺點:編譯以後若是須要修改就須要整個模塊從新編譯。編譯的時候根據對應的運行環境生成機器碼,不一樣的操做系統之間移植就會有問題,須要根據運行的操做系統環境編譯不一樣的可執行文件。
解釋型
優勢:有良好的平臺兼容性和可移植性,在任何環境中均可以運行,前提是安裝瞭解釋器(虛擬機)。靈活,修改代碼的時候直接修改就能夠,能夠快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,執行效率低,佔用空間大,不只要給用戶程序分配空間,解釋器自己也佔用了寶貴的系統資源,所以性能上不如編譯型語言。編程
一、源文件(包含全部的程序代碼)---->編譯器(編譯)---->可執行文件(直接運行)瀏覽器
二、一個項目(包含各個源文件)---->編譯器(編譯)---->生成對應的目標文件---->連接程序(Linker)---->將目標文件「打包」成可執行文件(連接)連接程序除了連接目標文件外,可能還有各類資源,像圖標文件、聲音文件,還要負責去除目標文件之間的冗餘重複代碼,等等;
在程序運行的前一刻,還只有源程序而沒有可執行程序;而程序每執行到源程序的某一條指令,則會有一個稱之爲解釋程序的外殼程序將源代碼轉換成二進制代碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……
1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯期間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。
1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。
強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。
根據最新的TIOBE排行榜顯示,Python在全部編程語言的熱門程度中排行第四,是一個優秀並普遍使用的語言。
(注:TIOBE排行榜是根據互聯網上有經驗的程序員、課程和第三方廠商的數量,並使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube統計出排名數據,只是反映某個編程語言的熱門程度,並不能說明一門編程語言好很差,或者一門語言所編寫的代碼數量多少。)
https://www.tiobe.com/tiobe-index/
既然目前Python這麼火熱,那它有哪些優勢呢?
固然,任何一門語言都不是完美的,都有擅長和不擅長的,語言只是一個工具,是實現程序設計師思想的工具,只要咱們利用好它們,都能創造價值!