python历史背景_python学习之旅1-1(python背景、安装介绍)
一、python介紹
1.python歷史背景
python的創(chuàng)始人為吉多·范羅蘇姆(Guido van Rossum)。1989年的圣誕節(jié)期間,吉多·范羅蘇姆(中文名字:龜叔)為了在阿姆斯特丹打發(fā)時間,決心開發(fā)一個新的腳本解釋程序,作為ABC語言的一種繼承。
1989年,為了打發(fā)圣誕節(jié)假期,Guido開始寫Python語言的編譯器。Python這個名字,來自Guido所摯愛的電視劇Monty Python’s Flying Circus。他希望這個新的叫做Python的語言,能符合他的理想:創(chuàng)造一種C和shell之間,功能全面,易學易用,可拓展的語言。
1991年,第一個Python編譯器誕生。它是用C語言實現(xiàn)的,并能夠調(diào)用C語言的庫文件。從一出生,Python已經(jīng)具有了:類,函數(shù),異常處理,包含表和詞典在內(nèi)的核心數(shù)據(jù)類型,以及模塊為基礎的拓展系統(tǒng)。
Granddaddy of Python web frameworks, Zope 1 was released in 1999
Python 1.0 - January 1994 增加了?lambda,?map,?filter?and?reduce.
Python 2.0 - October 16, 2000,加入了內(nèi)存回收機制,構(gòu)成了現(xiàn)在Python語言框架的基礎
Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 誕生
Python 2.5 - September 19, 2006
Python 2.6 - October 1, 2008
Python 2.7 - July 3, 2010
In November 2014, it was announced that Python 2.7 would be supported until 2020, and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible
Python 3.0 - December 3, 2008
Python 3.1 - June 27, 2009
Python 3.2 - February 20, 2011
Python 3.3 - September 29, 2012
Python 3.4 - March 16, 2014
Python 3.5 - September 13, 2015
Python 3.6 - December 16,2016
2.python語言
機器語言:
特點:計算機能夠看懂的0和1去寫程序
優(yōu)點:程序運行速度快
缺點:開發(fā)效率低
匯編語言:
特點:用一些英文標簽代替一串而精致數(shù)字去寫程序
優(yōu)點:比機器語言好一點,操作系統(tǒng)內(nèi)大量使用匯編語言
比如關(guān)于進程的調(diào)度代碼,就是用匯編語言寫的
缺點:開發(fā)效率低
高級語言:
特點:用人能讀懂的(英文)字符去寫程序
優(yōu)點:開發(fā)效率高
缺點:必須經(jīng)過翻譯才能讓計算機識別,導致運行速度慢
按照編譯的方式分為:
編譯型:一次翻譯,拿著編譯后的結(jié)果直接給機器運行
C語言: 編譯器:gcc glibc
開發(fā)效率低,運行效率高
解釋型
Python語言:
CPython
當我們從Python官方網(wǎng)站下載并安裝好Python 3.6后,我們就直接獲得了一個官方版本的解釋器:CPython。這個解釋器是用C語言開發(fā)的,所以叫CPython。在命令行下運行python就是啟動CPython解釋器。
CPython是使用最廣的Python解釋器。教程的所有代碼也都在CPython下執(zhí)行。
IPython
IPython是基于CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執(zhí)行Python代碼的功能和CPython是完全一樣的。好比很多國產(chǎn)瀏覽器雖然外觀不同,但內(nèi)核其實都是調(diào)用了IE。
CPython用>>>作為提示符,而IPython用In [序號]:作為提示符。
PyPy
PyPy是另一個Python解釋器,它的目標是執(zhí)行速度。PyPy采用JIT技術(shù),對Python代碼進行動態(tài)編譯(注意不是解釋),所以可以顯著提高Python代碼的執(zhí)行速度。
絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執(zhí)行可能會有不同的結(jié)果。如果你的代碼要放到PyPy下執(zhí)行,就需要了解PyPy和CPython的不同點。
Jython
Jython是運行在Java平臺上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行。
IronPython
IronPython和Jython類似,只不過IronPython是運行在微軟.Net平臺上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼。
小結(jié):
Python的解釋器很多,但使用最廣泛的還是CPython。如果要和Java或.Net平臺交互,最好的辦法不是用Jython或IronPython,而是通過網(wǎng)絡調(diào)用來交互,確保各程序之間的獨立性。
編譯型
優(yōu)點:編譯器一般會有預編譯的過程對代碼進行優(yōu)化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執(zhí)行效率高。可以脫離語言環(huán)境獨立運行。
缺點:編譯之后如果需要修改就需要整個模塊重新編譯。編譯的時候根據(jù)對應的運行環(huán)境生成機器碼,不同的操作系統(tǒng)之間移植就會有問題,需要根據(jù)運行的操作系統(tǒng)環(huán)境編譯不同的可執(zhí)行文件。
解釋型
優(yōu)點:有良好的平臺兼容性,在任何環(huán)境中都可以運行,前提是安裝了解釋器(虛擬機)。靈活,修改代碼的時候直接修改就可以,可以快速部署,不用停機維護。
缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。
2.2動態(tài)語言和靜態(tài)語言
通常我們所說的動態(tài)語言、靜態(tài)語言是指動態(tài)類型語言和靜態(tài)類型語言。
(1)動態(tài)類型語言:動態(tài)類型語言是指在運行期間才去做數(shù)據(jù)類型檢查的語言,也就是說,在用動態(tài)類型的語言編程時,永遠也不用給任何變量指定數(shù)據(jù)類型,該語言會在你第一次賦值給變量時,在內(nèi)部將數(shù)據(jù)類型記錄下來。Python和Ruby就是一種典型的動態(tài)類型語言,其他的各種腳本語言如VBScript也多少屬于動態(tài)類型語言。
(2)靜態(tài)類型語言:靜態(tài)類型語言與動態(tài)類型語言剛好相反,它的數(shù)據(jù)類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變量的數(shù)據(jù)類型,C/C++是靜態(tài)類型語言的典型代表,其他的靜態(tài)類型語言還有C#、JAVA等。
2.3強類型定義語言和弱類型定義語言
(1)強類型定義語言:強制數(shù)據(jù)類型定義的語言。也就是說,一旦一個變量被指定了某個數(shù)據(jù)類型,如果不經(jīng)過強制轉(zhuǎn)換,那么它就永遠是這個數(shù)據(jù)類型了。舉個例子:如果你定義了一個整型變量a,那么程序根本不可能將a當作字符串類型處理。強類型定義語言是類型安全的語言。
(2)弱類型定義語言:數(shù)據(jù)類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數(shù)據(jù)類型的值。
強類型定義語言在速度上可能略遜色于弱類型定義語言,但是強類型定義語言帶來的嚴謹性能夠有效的避免許多錯誤。另外,“這門語言是不是動態(tài)語言”與“這門語言是否類型安全”之間是完全沒有聯(lián)系的!
例如:Python是動態(tài)語言,是強類型定義語言(類型安全的語言); VBScript是動態(tài)語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態(tài)語言,是強類型定義語言(類型安全的語言)。
通過上面這些介紹,我們可以得出,python是一門動態(tài)解釋性的強類型定義語言。
總結(jié):
運行效率從高到低
開發(fā)效率從低到高
二、python環(huán)境
windows下安裝Python(手動添加環(huán)境變量)以3.5版本舉例:
windows:
windows下安裝Python(自動添加環(huán)境變量)以3,.5版本的舉例:
2,選擇版本。
3,自動添加環(huán)境變量。
4,更改完成。
5,點擊安裝即可。
linux:
總結(jié)
以上是生活随笔為你收集整理的python历史背景_python学习之旅1-1(python背景、安装介绍)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: smbus协议的command_SMBu
- 下一篇: BUAA - Team Review S