新聞中心
本篇文章給大家?guī)?lái)了關(guān)于python的相關(guān)知識(shí),其中主要介紹了包括程序運(yùn)行機(jī)制和Python語(yǔ)言的誕生與發(fā)展史等相關(guān)問(wèn)題,希望對(duì)大家有幫助。

推薦學(xué)習(xí):python學(xué)習(xí)教程
1.1 硬件系統(tǒng)
??硬件系統(tǒng)主要可以分為主機(jī)和外設(shè),是指構(gòu)成計(jì)算機(jī)系統(tǒng)的物理實(shí)體,它們主要由各種各樣的電子器件和機(jī)電裝置組成。從ENIAC(世界上第一臺(tái)計(jì)算機(jī))到目前最先進(jìn)的電腦,硬件系統(tǒng)的設(shè)計(jì)采用的都是馮·諾依曼體系結(jié)構(gòu),如下所示:
- 運(yùn)算器: 負(fù)責(zé)數(shù)據(jù)的算術(shù)運(yùn)算和邏輯運(yùn)算,即數(shù)據(jù)的加工處理;
- 控制器: 計(jì)算機(jī)的中樞神經(jīng),協(xié)調(diào)計(jì)算機(jī)各部分組件工作以及內(nèi)存和外設(shè)的訪(fǎng)問(wèn);
其中:運(yùn)算器和控制器統(tǒng)稱(chēng)為中央處理器,即CPU - 存儲(chǔ)器: 實(shí)現(xiàn)記憶功能的部件,用來(lái)存儲(chǔ)程序、數(shù)據(jù)、命令和各種信號(hào)等信息,并在需要時(shí)提供這些信息;
- 輸入設(shè)備: 實(shí)現(xiàn)將程序、原始數(shù)據(jù)、文字、字符、控制命令或現(xiàn)場(chǎng)采集的數(shù)據(jù)等信息輸入到計(jì)算機(jī)中;
- 輸出設(shè)備: 實(shí)現(xiàn)將計(jì)算機(jī)處理后生成的中間結(jié)果或最終結(jié)果輸出,包括各種數(shù)據(jù)符號(hào)、文字和控制信號(hào)等信息;
1.2 軟件系統(tǒng)
??軟件系統(tǒng)主要可以分為系統(tǒng)軟件和應(yīng)用軟件,是指保證計(jì)算機(jī)正常運(yùn)行所需的各種程序,是我們編程實(shí)踐的主要對(duì)象,組成如下:
- 系統(tǒng)軟件: 保證計(jì)算機(jī)硬件的正常工作和性能得到發(fā)揮,并且為計(jì)算機(jī)用戶(hù)提供一個(gè)直觀(guān)、友好和方便的使用界面。
- 操作系統(tǒng): 方便用戶(hù)控制和管理計(jì)算機(jī)軟硬件資源的系統(tǒng)軟件,功能復(fù)雜,是所有軟件正常運(yùn)行的基礎(chǔ)和核心;
- 編譯程序: 也叫語(yǔ)言處理程序,作用是把程序員使用各種編程語(yǔ)言,如Java和Python等所編寫(xiě)的程序,翻譯成計(jì)算機(jī)可執(zhí)行的機(jī)器語(yǔ)言。
- 應(yīng)用軟件: 應(yīng)用軟件是計(jì)算機(jī)為滿(mǎn)足不同用戶(hù)的需求而提供的那部分軟件,它可以拓寬計(jì)算機(jī)系統(tǒng)的應(yīng)用領(lǐng)域,方法硬件的性能。
- 社交辦公類(lèi): 微信、QQ、WPS、騰訊會(huì)議、釘釘、陌陌等;
- 休閑娛樂(lè)類(lèi): QQ音樂(lè)、騰訊視頻、Steam、歡樂(lè)斗地主等;
二、程序運(yùn)行機(jī)制
2.1 編譯型和解釋型
分析: 計(jì)算機(jī)可以直接識(shí)別下面這段Python代碼嗎?
"""
分析:在控制臺(tái)輸出以下Python代碼,計(jì)算機(jī)可以直接處理嗎?
"""print("Hello world!") # print()為Python中的內(nèi)置函數(shù),主要用于輸出括號(hào)內(nèi)的內(nèi)容,類(lèi)似于Java中的System.out.println("Hello world!")
??顯然,上述代碼主要由英文字母和標(biāo)點(diǎn)符號(hào)組成,但前面已經(jīng)說(shuō)過(guò),計(jì)算機(jī)只能識(shí)別機(jī)器碼(0和1),即它本身壓根就不認(rèn)識(shí)這段代碼。
??那么,我們是如何通過(guò)代碼控制計(jì)算機(jī)進(jìn)行工作的?
??人機(jī)交互的過(guò)程就像一個(gè)當(dāng)?shù)厝伺c一個(gè)外國(guó)人進(jìn)行交流時(shí)一樣,如果雙方想要理解彼此的想法,就需要一個(gè)中間介質(zhì),它可以通過(guò)某種方式把對(duì)方的語(yǔ)言轉(zhuǎn)換成自己可以理解的語(yǔ)言,反之亦然。因此,計(jì)算機(jī)如果想要理解我們編寫(xiě)的代碼,就需要將其轉(zhuǎn)換為自己可以識(shí)別的機(jī)器碼,而根據(jù)轉(zhuǎn)換過(guò)程,編程語(yǔ)言又被分為編譯型和解釋型。
- 編譯型: 編譯型語(yǔ)言可以直接將代碼轉(zhuǎn)為計(jì)算機(jī)可以識(shí)別并執(zhí)行的機(jī)器碼,如
C++。
- 解釋型: 解釋型語(yǔ)言先將代碼轉(zhuǎn)換為字節(jié)碼,然后再將其翻譯成計(jì)算機(jī)可識(shí)別的機(jī)器碼,如
Python。
2.2 計(jì)算機(jī)處理程序的流程
- 用戶(hù)打開(kāi)程序,程序開(kāi)始執(zhí)行;
- 操作系統(tǒng)將程序內(nèi)容和相關(guān)數(shù)據(jù)送入計(jì)算機(jī)內(nèi)存;
- CPU根據(jù)程序內(nèi)容從內(nèi)存中讀取指令;
- CPU分析、處理指令,并為下一條指令做好準(zhǔn)備;
- 讀取下一條指令分析并處理,如此循環(huán)往復(fù)直至處理完程序中的全部指令,最后將計(jì)算結(jié)果放入指令指定的存儲(chǔ)器地址中;
2.3 計(jì)算機(jī)語(yǔ)言發(fā)展史
?? 算法是計(jì)算機(jī)的靈魂,而編程語(yǔ)言是使得計(jì)算機(jī)具有靈魂的工具。伴隨著計(jì)算機(jī)硬件的發(fā)展,計(jì)算機(jī)編程語(yǔ)言也歷經(jīng)了從低級(jí)到高級(jí)的演變,而每一次改變的核心思想就是“讓人更容易編程”。計(jì)算機(jī)硬件的速度越快、體積越小、成本越低,應(yīng)用到人類(lèi)社會(huì)的場(chǎng)景就會(huì)越多,那么所需要的算法就會(huì)越復(fù)雜,也就要求計(jì)算機(jī)編程語(yǔ)言越高級(jí)。最初重達(dá)幾十噸但一秒只能運(yùn)算5000次的ENIAC,只能做非常小的應(yīng)用,如彈道計(jì)算。如今,任何一個(gè)人的手機(jī)運(yùn)算能力都可以秒殺那個(gè)年代地球上所有計(jì)算機(jī)運(yùn)算能力的總和。越容易使用的語(yǔ)言,就有越多人使用;越多人使用,就有越多人協(xié)作;越多人協(xié)作,就可以創(chuàng)造越復(fù)雜的物體?,F(xiàn)代社會(huì),一個(gè)軟件動(dòng)輒幾十或幾百人、甚至幾千人協(xié)作也成為可能,這自然就為開(kāi)發(fā)復(fù)雜軟件提供了“人力基礎(chǔ)”。這是一個(gè)人類(lèi)普遍的社會(huì)現(xiàn)象,越容易使用的工具,通過(guò)使用數(shù)量,通過(guò)大量人的協(xié)作,徹底改變某個(gè)行業(yè)甚至人類(lèi)社會(huì)。未來(lái)三十年必將是軟件人才的世界,除普通軟件,大量人工智能軟件,如自動(dòng)駕駛、機(jī)器人保姆以及機(jī)器人女友都會(huì)進(jìn)入我們的生活,甚至計(jì)算機(jī)技術(shù)和基因工程結(jié)合以實(shí)現(xiàn)長(zhǎng)生不老,感興趣的可以閱讀一下《未來(lái)簡(jiǎn)史: 從智人到智神》。
- 機(jī)器語(yǔ)言: 相當(dāng)于人類(lèi)的的原始階段;
??機(jī)器語(yǔ)言由數(shù)字組成所有指令。當(dāng)讓你使用數(shù)字編程,寫(xiě)幾百個(gè)數(shù)字、甚至幾千個(gè)數(shù)字,每天面對(duì)的是純數(shù)字,可以大膽預(yù)測(cè):“程序員群體100%會(huì)有精神問(wèn)題”。機(jī)器語(yǔ)言通常由數(shù)字串組成(最終被簡(jiǎn)化成二進(jìn)制0和1),對(duì)于人類(lèi)來(lái)說(shuō),機(jī)器語(yǔ)言過(guò)于繁瑣。使用機(jī)器語(yǔ)言,人類(lèi)無(wú)法編出復(fù)雜的程序。
- 匯編語(yǔ)言: 相當(dāng)于人類(lèi)的手工業(yè)階段;
??為了編程的方便,以及解決更加復(fù)雜的問(wèn)題,程序員開(kāi)始改進(jìn)機(jī)器語(yǔ)言,使用英文縮寫(xiě)的助記符(單詞)來(lái)表示基本的計(jì)算機(jī)操作。這些助記符構(gòu)成了匯編語(yǔ)言的基礎(chǔ),如:LOAD、MOVE 之類(lèi),這樣人更容易記憶和使用。識(shí)別成百上千個(gè)單詞,總比成百上千個(gè)數(shù)字,感覺(jué)會(huì)好很多。匯編語(yǔ)言相當(dāng)于人類(lèi)的手工業(yè)社會(huì),需要技術(shù)極其嫻熟的工匠,但是開(kāi)發(fā)效率也非常低。匯編語(yǔ)言雖然能編寫(xiě)高效率的程序,但是學(xué)習(xí)和使用都不是易事,并且很難調(diào)試。另一個(gè)復(fù)雜的問(wèn)題,匯編語(yǔ)言以及早期的計(jì)算機(jī)語(yǔ)言(Basic、Fortran等)沒(méi)有考慮結(jié)構(gòu)化設(shè)計(jì)原則,而是使用goto語(yǔ)句來(lái)作為程序流程控制的主要方法。這樣做的后果是:一大堆混亂的調(diào)轉(zhuǎn)語(yǔ)句使得程序幾乎不可能被讀懂。對(duì)于那個(gè)時(shí)代的程序員,能讀懂上個(gè)月自己寫(xiě)的代碼都成為一種挑戰(zhàn)。即使這樣,匯編語(yǔ)言仍然應(yīng)用于工業(yè)電子編程領(lǐng)域、軟件的加密解密、計(jì)算機(jī)病毒分析等。
- 高級(jí)編程語(yǔ)言: 相當(dāng)于人類(lèi)工業(yè)階段;
??對(duì)于簡(jiǎn)單的任務(wù),匯編語(yǔ)言可以勝任。但是,隨著計(jì)算機(jī)的發(fā)展以及其漸漸滲透到了工作生活的方方面面,一些復(fù)雜的任務(wù)出現(xiàn)了,匯編語(yǔ)言就顯得力不從心(應(yīng)該說(shuō)是程序員使用匯編語(yǔ)言解決復(fù)雜問(wèn)題出現(xiàn)了瓶頸)。于是,出現(xiàn)了高級(jí)語(yǔ)言,如C++、Java等。語(yǔ)言越高級(jí),越接近人的思維,使用起來(lái)就越方便。高級(jí)語(yǔ)言,尤其是面向?qū)ο蟮恼Z(yǔ)言,如Java、Python等,使得編程的難度和門(mén)檻越來(lái)越低。目前以及可預(yù)見(jiàn)的未來(lái),計(jì)算機(jī)語(yǔ)言仍然處于“第三代高級(jí)語(yǔ)言”階段,高級(jí)語(yǔ)言允許程序員使用接近日常英語(yǔ)的指令來(lái)編寫(xiě)程序。例如,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的任務(wù):A+B=C , 使用機(jī)器語(yǔ)言、匯編語(yǔ)言和高級(jí)語(yǔ)言的的實(shí)現(xiàn)如下所示:
三、Python語(yǔ)言的誕生與發(fā)展史
TIOBE編程語(yǔ)言排行榜:
3.1 誕生與發(fā)展
- 時(shí)代背景: 硬件限制;
??Python的作者,Guido von Rossum(吉多·范·羅蘇姆),荷蘭人。1982年,吉多從阿姆斯特丹大學(xué)獲得了數(shù)學(xué)和計(jì)算機(jī)碩士學(xué)位。然而,盡管他算得上是一位數(shù)學(xué)家,但他更加享受計(jì)算機(jī)帶來(lái)的樂(lè)趣。用他的話(huà)說(shuō),雖然擁有數(shù)學(xué)和計(jì)算機(jī)雙料資質(zhì),他總趨向于做計(jì)算機(jī)相關(guān)的工作,并熱衷于做任何和編程相關(guān)的事情。在那個(gè)時(shí)候,吉多接觸并使用過(guò)諸如Pascal、C、Fortran等語(yǔ)言。這些語(yǔ)言的基本設(shè)計(jì)原則是讓機(jī)器能更快運(yùn)行。在80年代,雖然IBM和蘋(píng)果已經(jīng)掀起了個(gè)人電腦(personal computer)浪潮,但這些個(gè)人電腦的配置很低。比如早期的Macintosh,只有8MHz的CPU主頻和128KB的RAM,一個(gè)大的數(shù)組就能占滿(mǎn)內(nèi)存。所有的編譯器的核心是做優(yōu)化,以便讓程序能夠運(yùn)行。為了增進(jìn)效率,語(yǔ)言也迫使程序員像計(jì)算機(jī)一樣思考,以便能寫(xiě)出更符合機(jī)器口味的程序。在那個(gè)時(shí)代,程序員恨不得用手榨取計(jì)算機(jī)每一寸的能力。有人甚至認(rèn)為C語(yǔ)言的指針是在浪費(fèi)內(nèi)存。至于動(dòng)態(tài)類(lèi)型,內(nèi)存自動(dòng)管理,面向?qū)ο蟆?別想了,那會(huì)讓你的電腦陷入癱瘓。
- Shell: 本質(zhì)是調(diào)用命令,它不是一個(gè)真正的語(yǔ)言;
??這種編程方式讓吉多感到苦惱。吉多知道如何用C語(yǔ)言寫(xiě)出一個(gè)功能,但整個(gè)編寫(xiě)過(guò)程需要耗費(fèi)大量的時(shí)間,即使他已經(jīng)準(zhǔn)確的知道了如何實(shí)現(xiàn)。他的另一個(gè)選擇是shell。Bourne Shell作為UNIX系統(tǒng)的解釋器已經(jīng)長(zhǎng)期存在。UNIX的管理員們常常用shell去寫(xiě)一些簡(jiǎn)單的腳本,以進(jìn)行一些系統(tǒng)維護(hù)的工作,比如定期備份、文件系統(tǒng)管理等等。shell可以像膠水一樣,將UNIX系統(tǒng)下的許多功能連接在一起。許多C語(yǔ)言上百行的程序,在shell下只用幾行就可以完成。然而,shell的本質(zhì)是調(diào)用命令,它并不是一個(gè)真正的語(yǔ)言。例如,shell沒(méi)有數(shù)值型的數(shù)據(jù)類(lèi)型,加法運(yùn)算都很復(fù)雜。總之,shell不能全面調(diào)動(dòng)計(jì)算機(jī)的功能。
- ABC語(yǔ)言: 可讀易用,弊端明顯;
??吉多希望有一種語(yǔ)言,這種語(yǔ)言能夠像C語(yǔ)言那樣,能夠全面調(diào)用計(jì)算機(jī)的功能接口,又可以像shell那樣,可以輕松的編程。ABC語(yǔ)言讓吉多看到希望。ABC是由荷蘭的數(shù)學(xué)和計(jì)算機(jī)研究所開(kāi)發(fā)的。吉多在該研究所工作,并參與到ABC語(yǔ)言的開(kāi)發(fā)。ABC語(yǔ)言以教學(xué)為目的。與當(dāng)時(shí)的大部分語(yǔ)言不同,ABC語(yǔ)言的目標(biāo)是“讓用戶(hù)感覺(jué)更好”。ABC語(yǔ)言希望讓語(yǔ)言變得容易閱讀、使用、記憶和學(xué)習(xí),并以此來(lái)激發(fā)人們學(xué)習(xí)編程的興趣。
??然而,ABC語(yǔ)言編譯器需要很高的電腦配置才能運(yùn)行,而這些電腦的使用者通常都精通電腦,所以他們更多的是關(guān)注程序的效率,而非它的學(xué)習(xí)難度。另一方面,如下致命的設(shè)計(jì)問(wèn)題是它沒(méi)有流行起來(lái)的原因:
- 可擴(kuò)展性差: ABC不是模塊化語(yǔ)言,如果想在其中增加功能,如對(duì)圖形化的支持,需要改動(dòng)很多地方。
- 不能直接進(jìn)行
IO: ABC不能直接操作文件系統(tǒng),即不能直接讀寫(xiě)數(shù)據(jù)。輸入輸出的困難對(duì)于計(jì)算機(jī)而言是致命的,你能想象一個(gè)不能打開(kāi)車(chē)門(mén)的跑車(chē)嗎? - 過(guò)度革新: ABC用自然語(yǔ)言的形式來(lái)表達(dá)程序的意義。例如,它使用
How to來(lái)定義一個(gè)函數(shù),而對(duì)于程序員來(lái)說(shuō),他們更習(xí)慣用function或define。 - 傳播困難: ABC編譯器很大,必須保存在磁帶上,這也就意味著如果想要使用它,必須先準(zhǔn)備一個(gè)大大的磁帶。
- Python孕育與成長(zhǎng): 介于
C和Shell之間的簡(jiǎn)單易學(xué)、功能全面的語(yǔ)言;
??1989年,為了打發(fā)圣誕節(jié)假期,吉多開(kāi)始寫(xiě)Python語(yǔ)言的編譯器。Python這個(gè)名字,來(lái)自吉多所摯愛(ài)的電視劇Monty Python’s Flying Circus。他希望這個(gè)新的叫做Python的語(yǔ)言,能符合他的理想:介于C和shell之間,功能全面,易學(xué)易用,可拓展的語(yǔ)言。吉多作為一個(gè)語(yǔ)言設(shè)計(jì)愛(ài)好者,已經(jīng)有過(guò)設(shè)計(jì)語(yǔ)言的嘗試。這一次,也不過(guò)是一次純粹的hacking行為。
??1991年,第一個(gè)Python編譯器誕生。它是用C語(yǔ)言實(shí)現(xiàn)的,并能夠調(diào)用C語(yǔ)言的庫(kù)文件。從一出生,Python已經(jīng)具有了:類(lèi),函數(shù),異常處理,包含表和詞典在內(nèi)的核心數(shù)據(jù)類(lèi)型,以及模塊為基礎(chǔ)的拓展系統(tǒng)。Python語(yǔ)法很多來(lái)自C,但又受到ABC語(yǔ)言的強(qiáng)烈影響。來(lái)自ABC語(yǔ)言的一些規(guī)定直到今天還富有爭(zhēng)議,比如強(qiáng)制縮進(jìn),但這些語(yǔ)法規(guī)定讓Python容易讀。另一方面,Python聰明的選擇服從一些慣例,特別是C語(yǔ)言的慣例,比如恢復(fù)等號(hào)賦值。吉多認(rèn)為,如果“常識(shí)”上確立的東西,沒(méi)有必要過(guò)度糾結(jié)。Python從一開(kāi)始就特別在意可拓展性。Python可以在多個(gè)層次上拓展。從高層上,你可以直接引入.py文件。在底層,你可以引用C語(yǔ)言的庫(kù)。Python程序員可以快速的使用Python寫(xiě).py文件作為拓展模塊。但當(dāng)性能是考慮的重要因素時(shí),Python程序員可以深入底層,寫(xiě)C程序,編譯為.so文件引入到Python中使用。Python就好像是使用鋼構(gòu)建房一樣,先規(guī)定好大的框架,而程序員可以在此框架下相當(dāng)自由的拓展或更改。
??最初的Python完全由吉多本人開(kāi)發(fā)。Python得到吉多同事的歡迎。他們迅速的反饋使用意見(jiàn),并參與到Python的改進(jìn)。吉多和一些同事構(gòu)成Python的核心團(tuán)隊(duì)。他們將自己大部分的業(yè)余時(shí)間用于hack Python。隨后,Python拓展到研究所之外。Python將許多技術(shù)層面上的細(xì)節(jié)隱藏,交給編譯器處理,并凸顯出邏輯層面的編程思考。因此,Python程序員可以花更多的時(shí)間用于思考程序的邏輯,而不是具體的實(shí)現(xiàn)細(xì)節(jié)。這一特征吸引了廣大的程序員,Python開(kāi)始流行。計(jì)算機(jī)硬件越來(lái)越強(qiáng)大,Python又容易使用,所以許多人開(kāi)始轉(zhuǎn)向Python。吉多維護(hù)了一個(gè)mail list,Python用戶(hù)就通過(guò)郵件進(jìn)行交流。Python用戶(hù)來(lái)自許多領(lǐng)域,有不同的背景,對(duì)Python也有不同的需求。Python相當(dāng)?shù)拈_(kāi)放,又容易拓展,所以當(dāng)用戶(hù)不滿(mǎn)足于現(xiàn)有功能,很容易對(duì)Python進(jìn)行拓展或改造。隨后,這些用戶(hù)將改動(dòng)發(fā)給吉多,并由吉多決定是否將新的特征加入到Python或者標(biāo)準(zhǔn)庫(kù)中。如果代碼能被納入Python自身或者標(biāo)準(zhǔn)庫(kù),這將是極大的榮譽(yù)。由于吉多至高無(wú)上的決定權(quán),他因此被稱(chēng)為“終身的仁慈獨(dú)裁者”。2018年7月12日,在完成PEP(Python Enhancement Proposals)572后,吉多決定退出Python核心決策層。
??Python以及其標(biāo)準(zhǔn)庫(kù)的功能強(qiáng)大,這些是整個(gè)社區(qū)的貢獻(xiàn)。Python的開(kāi)發(fā)者來(lái)自不同領(lǐng)域,他們將不同領(lǐng)域的優(yōu)點(diǎn)帶給Python。例如,Python標(biāo)準(zhǔn)庫(kù)中的正則表達(dá)式(Regular expression)是參考Perl,而lambda, map, filter, reduce等函數(shù)參考了Lisp。Python本身的一些功能以及大部分的標(biāo)準(zhǔn)庫(kù)來(lái)自于社區(qū)。Python的社區(qū)不斷擴(kuò)大,進(jìn)而擁有了自己的newsgroup,網(wǎng)站,以及基金。從Python 2.0開(kāi)始,Python也從mail list的開(kāi)發(fā)方式,轉(zhuǎn)為完全開(kāi)源的開(kāi)發(fā)方式。社區(qū)氣氛已經(jīng)形成,工作被整個(gè)社區(qū)分擔(dān),Python也獲得了更加高速的發(fā)展。到今天,Python的框架已經(jīng)確立。Python語(yǔ)言以對(duì)象為核心組織代碼,支持多種編程范式,采用動(dòng)態(tài)類(lèi)型,自動(dòng)進(jìn)行內(nèi)存回收。Python支持解釋運(yùn)行,并能調(diào)用C庫(kù)進(jìn)行拓展。Python有強(qiáng)大的標(biāo)準(zhǔn)庫(kù)。由于標(biāo)準(zhǔn)庫(kù)的體系已經(jīng)穩(wěn)定,所以Python的生態(tài)系統(tǒng)開(kāi)始拓展到第三方包。這些包,如Django、web.py、wxpython、numpy、matplotlib、PIL,將Python升級(jí)成了物種豐富的熱帶雨林。
??Python崇尚優(yōu)美、清晰、簡(jiǎn)單,是一個(gè)優(yōu)秀并廣泛使用的語(yǔ)言。Python在TIOBE排行榜中排行第八,它是Google的第三大開(kāi)發(fā)語(yǔ)言,Dropbox的基礎(chǔ)語(yǔ)言,豆瓣的服務(wù)器語(yǔ)言。Python的發(fā)展史可以作為一個(gè)代表,帶給我們?cè)S多啟示。在Python的開(kāi)發(fā)過(guò)程中,社區(qū)起到了重要的作用。吉多自認(rèn)為自己不是全能型的程序員,所以他只負(fù)責(zé)制訂框架。如果問(wèn)題太復(fù)雜,他會(huì)選擇繞過(guò)去,也就是cut the corner。這些問(wèn)題最終由社區(qū)中的其他人解決。社區(qū)中的人才是異常豐富的,就連創(chuàng)建網(wǎng)站,籌集基金這樣與開(kāi)發(fā)稍遠(yuǎn)的事情,也有人樂(lè)意于處理。如今的項(xiàng)目開(kāi)發(fā)越來(lái)越復(fù)雜,越來(lái)越龐大,合作以及開(kāi)放的心態(tài)將成為項(xiàng)目最終成功的關(guān)鍵。
??Python從其他語(yǔ)言中學(xué)到了很多,無(wú)論是已經(jīng)進(jìn)入歷史的ABC,還是依然在使用的C和Perl,以及許多沒(méi)有列出的其他語(yǔ)言??梢哉f(shuō),Python的成功代表了它所有借鑒的語(yǔ)言的成功。同樣,Ruby借鑒了Python,它的成功也代表了Python某些方面的成功。每個(gè)語(yǔ)言都是混合體,都有它優(yōu)秀的地方,但同時(shí)也有各種各樣的缺陷。同時(shí),一個(gè)語(yǔ)言“好與不好”的評(píng)判,往往受制于平臺(tái)、硬件、時(shí)代等等外部原因,程序員經(jīng)歷過(guò)許多語(yǔ)言之爭(zhēng)。
3.2 設(shè)計(jì)哲學(xué)
- 獲取Python設(shè)計(jì)哲學(xué): 成功安裝Python軟件后(下一個(gè)專(zhuān)題),打開(kāi)任意一個(gè)編輯環(huán)境鍵入
import this運(yùn)行即可;
- 總結(jié): 簡(jiǎn)單優(yōu)雅可擴(kuò)展,實(shí)用扁平是關(guān)鍵,最佳方案only one???
3.3 優(yōu)勢(shì)與不足
- 優(yōu)勢(shì):
- 簡(jiǎn)單易學(xué)可擴(kuò)展: 閱讀一個(gè)良好的Python程序就像欣賞一篇優(yōu)美的文章一樣,盡管它的要求非常嚴(yán)格,如強(qiáng)制縮進(jìn)可提高代碼的可讀性。Python的這種偽代碼本質(zhì)使得我們可以更多地關(guān)注于解決問(wèn)題的邏輯而非搞明白語(yǔ)言本身,如我們無(wú)需過(guò)多關(guān)注諸如內(nèi)存管理這樣的底層細(xì)節(jié)。如果我們希望一段關(guān)鍵代碼運(yùn)行的更快(C要比Python快50倍以上)或希望某些算法不公開(kāi),可以把部分程序用
C或C++語(yǔ)言編寫(xiě),然后在Python程序中進(jìn)行調(diào)用。 - 免費(fèi)開(kāi)源可移植: Python是FLOSS(自由/開(kāi)放源碼軟件)之一,也就是說(shuō)我們可以自由地發(fā)布這個(gè)軟件的拷貝、閱讀它的源代碼 、對(duì)它做改動(dòng)、把它的一部分用于新的自由軟件中。由于其開(kāi)源本質(zhì),Python可移植在許多計(jì)算機(jī)平臺(tái)上,如Windows、Linux等。
- 面向?qū)ο? Python既支持面向過(guò)程的編程也支持面向?qū)ο蟮木幊獭?strong>在“面向過(guò)程”的語(yǔ)言中,程序是由過(guò)程或僅僅是可重用代碼的函數(shù)構(gòu)建起來(lái)的。在“面向?qū)ο蟆钡恼Z(yǔ)言中,程序是由數(shù)據(jù)和功能組合而成的對(duì)象構(gòu)建起來(lái)的。與其它的編程語(yǔ)言如C++和Java相比,Python以一種非常強(qiáng)大又簡(jiǎn)單的方式實(shí)現(xiàn)面向?qū)ο缶幊蹋庋b、繼承和多態(tài)三大特性則是它成"神"的關(guān)鍵。
- 動(dòng)態(tài)語(yǔ)言: 動(dòng)態(tài)語(yǔ)言,又稱(chēng)為弱類(lèi)型語(yǔ)言,是指變量在創(chuàng)建時(shí)不需聲明類(lèi)型,具體類(lèi)型根據(jù)指向的內(nèi)存單元中的數(shù)據(jù)類(lèi)型決定,即指向什么類(lèi)型就是什么類(lèi)型。相反,靜態(tài)語(yǔ)言(強(qiáng)類(lèi)型語(yǔ)言),定義變量時(shí)需要聲明類(lèi)型,變量指向的內(nèi)存單元可存放的數(shù)據(jù)類(lèi)型固定。例如,Python中定義一個(gè)整數(shù)變量為
num = 10,而在Java中則為int num = 10;。總結(jié):動(dòng)態(tài)類(lèi)型,指向可變,內(nèi)存單元中的內(nèi)容不可變;靜態(tài)類(lèi)型,指向不可變,內(nèi)容可變。 - 解釋型語(yǔ)言: 編譯型語(yǔ)言,如
C++寫(xiě)的程序可以從源文件(C++語(yǔ)言)轉(zhuǎn)換到一個(gè)你的計(jì)算機(jī)使用的語(yǔ)言,即二進(jìn)制代碼(0和1)。這個(gè)過(guò)程通過(guò)編譯器和不同的標(biāo)記以及選項(xiàng)完成。當(dāng)我們運(yùn)行程序的時(shí)候,連接轉(zhuǎn)載器軟件把我們的程序從硬盤(pán)復(fù)制到內(nèi)存中并且運(yùn)行。而Python語(yǔ)言寫(xiě)的程序不需要編譯成二進(jìn)制代碼。我們可以直接從源代碼運(yùn)行程序。在計(jì)算機(jī)內(nèi)部,Python解釋器把源代碼轉(zhuǎn)換成稱(chēng)為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器碼并運(yùn)行。由于只需要把我們的Python程序拷貝到另外一臺(tái)計(jì)算機(jī)上,它就可以工作了,這也使得Python程序更加容易移植。 - 豐富的庫(kù): 包括Python自帶的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù)。其中Python的標(biāo)準(zhǔn)庫(kù)可以幫助我們處理各種工作,包括正則表達(dá)式、文檔生成、線(xiàn)程、數(shù)據(jù)庫(kù)、HTML、GUI等。這被稱(chēng)作Python的“功能齊全”理念。除了標(biāo)準(zhǔn)庫(kù)以外,Python也支持安裝第三方庫(kù),如wxPython、Twisted和Python圖像庫(kù)等。
- 缺點(diǎn): Python語(yǔ)言非常完美,沒(méi)有明顯的短板和缺點(diǎn)。唯一的不足就是執(zhí)行效率慢,而這個(gè)是解釋型語(yǔ)言所通有的,不過(guò)這一缺陷會(huì)隨著計(jì)算機(jī)硬件性能的不斷提升而弱化。
3.4 應(yīng)用場(chǎng)景
本文標(biāo)題:簡(jiǎn)單介紹一下Python(圖文詳解)
分享路徑:http://www.5511xx.com/article/dpjdeje.html


咨詢(xún)
建站咨詢(xún)
