前言
Python的前世今生
資料來(lái)源
我出生在上世紀(jì)80年代, 那時(shí)候的人們已經(jīng)開(kāi)始用起了IBM和蘋(píng)果電腦(雖然配置很低...), 那時(shí)候的電腦內(nèi)存只有128K, 隨便運(yùn)行點(diǎn)什么東西就能占滿內(nèi)存疯汁。
那時(shí)候編譯程序痹屹,大家都在考慮優(yōu)化赚楚, 以至于程序員們寫(xiě)代碼都像計(jì)算機(jī)一樣思考抖坪,希望能寫(xiě)出符合機(jī)器口味的程序浆熔。這種思考方式很讓我的父親(Guido)煩惱帚桩,他希望能有一種編程語(yǔ)言等龙,既可以充分利用計(jì)算機(jī)的性能闽坡,又可以輕松的編寫(xiě)。
1989年的圣誕節(jié)迅脐,Guido為了打發(fā)這個(gè)假期芍殖, 開(kāi)始創(chuàng)造我的編譯/解釋器。我的名字也是從Guido最喜歡的電視劇《Monty Python's Flying Circus》由來(lái)谴蔑。
時(shí)間來(lái)到了1991年, 第一代Python編譯器誕生豌骏。由C語(yǔ)言實(shí)現(xiàn),并且能夠調(diào)用C的庫(kù)(.so文件)隐锭。剛出生的我就已經(jīng)有了類 Class
窃躲,函數(shù) Function
,異常 Exception
钦睡,列表 List
蒂窒,字典 Dictionary
這些類型。
環(huán)境搭建
Python是一個(gè)跨平臺(tái)的編程語(yǔ)言荞怒,可以運(yùn)行在Windows洒琢、MacOS和各種Linux上運(yùn)行。
下載
目前褐桌,Python有兩個(gè)版本衰抑,一個(gè)是2.x版,一個(gè)是3.x版荧嵌,這兩個(gè)版本是不兼容的(語(yǔ)法上有些差異)停士。本篇以Python3.x進(jìn)行介紹
Python下載地址
往下翻可以看到這里有各個(gè)版本的Python下載鏈接
點(diǎn)擊Python3.9.0后面的Download
按鈕向下翻動(dòng)可以看到有Windows的安裝文件, 也有MacOS的安裝文件挖帘,點(diǎn)擊對(duì)應(yīng)的第一列即可下載.
需要注意Windows上安裝Python的時(shí)候要將Add Python x.x to PATH
勾選上
CentOS上可使用 yum install -y python3
進(jìn)行安裝。
環(huán)境驗(yàn)證
安裝好Python后恋技, Windows打開(kāi)cmd命令行, MacOS打開(kāi)終端拇舀,并在其輸入python
(MacOS/Linux下為python3
, 因?yàn)樽詭ython2)
為Python選擇一款解釋器
解釋器?蜻底?骄崩? 什么是解釋器?
想搞清楚什么是解釋器薄辅, 就需要先了解一下代碼是如何運(yùn)行的要拂。
首先,代碼有這么幾個(gè)概念
- 高級(jí)語(yǔ)言
- 低級(jí)語(yǔ)言
- 匯編語(yǔ)言
- 字節(jié)碼
- 機(jī)器碼
- 高級(jí)語(yǔ)言
簡(jiǎn)單的說(shuō)就是更接近自然語(yǔ)言(人類語(yǔ)言)的一門(mén)編程語(yǔ)言, 高級(jí)語(yǔ)言往往寫(xiě)起來(lái)更加簡(jiǎn)潔易讀站楚。很幸運(yùn)脱惰,Python就屬于高級(jí)語(yǔ)言的一種。
- 低級(jí)語(yǔ)言
介于高級(jí)語(yǔ)言和匯編之間窿春,類似于當(dāng)今的C語(yǔ)言拉一。
- 匯編語(yǔ)言
這個(gè)就不用多介紹了,匯編語(yǔ)言作為一門(mén)低級(jí)語(yǔ)言旧乞,想執(zhí)行的話只需要翻譯成機(jī)器碼就可以直接被硬件執(zhí)行蔚润。
- 字節(jié)碼
字節(jié)碼嚴(yán)格來(lái)說(shuō)不算是編程語(yǔ)言,而是高級(jí)編程語(yǔ)言為了種種需求(可移植性尺栖、可傳輸性嫡纠、預(yù)編譯等)而產(chǎn)生的中間碼(Intermediate Code)。
- 機(jī)器碼
機(jī)器碼是一組可以直接被CPU執(zhí)行的指令集延赌,
每一條指令都代表一個(gè)特定的任務(wù)除盏,或者是加載,或者是跳轉(zhuǎn)挫以,亦或是計(jì)算操作等等者蠕。
所有可以直接被CPU執(zhí)行的程序,都是由這么一系列的指令組成的屡贺。
機(jī)器碼可是看作是編譯過(guò)程中蠢棱,最低級(jí)的代碼锌杀,因外再往下就是交由硬件來(lái)執(zhí)行了甩栈。
當(dāng)然機(jī)器碼也是可以被編輯的,但是以人類難以看懂的姿勢(shì)存在糕再,可讀性非常差量没。
那么電腦想執(zhí)行一段代碼,會(huì)按照從高到低的方式依次進(jìn)行翻譯突想,直到翻譯成機(jī)器可以執(zhí)行的機(jī)器碼殴蹄,隨后去執(zhí)行究抓。
說(shuō)到這里可能你就理解了,對(duì)于Python這種高級(jí)語(yǔ)言袭灯,需要有一個(gè)程序?qū)ython代碼翻譯成機(jī)器碼去執(zhí)行刺下,那么這個(gè)翻譯Python代碼的程序就是我們要選擇的解釋器。
除了解釋器解釋執(zhí)行稽荧,還有一種叫做編譯執(zhí)行橘茉。比如Java這樣的語(yǔ)言就需要一個(gè)編譯器來(lái)編譯Java代碼最終變成機(jī)器碼執(zhí)行。 那解釋器和編譯器有什么區(qū)別呢姨丈?
編譯器畅卓,顧名思義需要將代碼進(jìn)行一次整體的編譯,經(jīng)過(guò)編譯的產(chǎn)物已經(jīng)有源代碼變成了字節(jié)碼(另一份代碼)蟋恬,這時(shí)候再去交給CPU去執(zhí)行翁潘。而解釋器則是邊解釋邊執(zhí)行,可以理解為解釋器讀取一行代碼就執(zhí)行一行代碼歼争。
Python常用的解釋器如下
- CPython
- IPython
- PyPy
- Jython
- IronPython
- CPython
官方提供的Python解釋器拜马,因?yàn)檫@個(gè)解釋器是由C語(yǔ)言開(kāi)發(fā)的,所以被叫做CPython矾飞。
目前CPython是使用最廣的Python解釋器一膨,也推薦各位使用這個(gè)解釋器。
- IPython
IPython是基于CPython之上的一個(gè)交互式解釋器洒沦,也就是說(shuō)豹绪,IPython只是在交互方式上有所增強(qiáng),但是執(zhí)行Python代碼的功能和CPython是完全一樣的申眼。好比很多國(guó)產(chǎn)瀏覽器雖然外觀不同瞒津,但內(nèi)核其實(shí)都是調(diào)用了IE。
- PyPy
PyPy是另一個(gè)Python解釋器括尸,它的目標(biāo)是執(zhí)行速度巷蚪。PyPy采用JIT技術(shù)(Just In Time),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯(注意不是解釋)濒翻,所以可以顯著提高Python代碼的執(zhí)行速度屁柏。
- Jython
Jython是運(yùn)行在Java平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成Java字節(jié)碼執(zhí)行有送。
- IronPython
IronPython和Jython類似淌喻,只不過(guò)IronPython是運(yùn)行在微軟.Net平臺(tái)上的Python解釋器,可以直接把Python代碼編譯成.Net的字節(jié)碼雀摘。
如果需要在Java環(huán)境或.NET環(huán)境中與Python進(jìn)行交互裸删,最好使用網(wǎng)絡(luò)調(diào)用,確保各程序之間的獨(dú)立性阵赠。
持續(xù)更新...
PyCharm安裝