Python 天生就是一種致力于簡(jiǎn)單主義思想的編程語(yǔ)言,閱讀一個(gè)良好的 Python 程序就感覺(jué)像是在讀英語(yǔ)一樣流暢旁壮。對(duì)于極客來(lái)說(shuō)婿牍,它就像是一把“輕武器”侈贷,既便攜又鋒利,幾乎無(wú)所不能等脂。它的這種極簡(jiǎn)主義風(fēng)格以及強(qiáng)大潛力深受編程愛(ài)好者的喜愛(ài)俏蛮。Python使你能夠?qū)W⒂诮鉀Q問(wèn)題而不是去搞明白語(yǔ)言本身,這源于它的天性稟賦上遥。
python設(shè)計(jì)之初衷
1999年嫁蛇,Python開(kāi)發(fā)者Guido向DARPA組織提交了一條名為”Computer Programming For Everybody”的資金申請(qǐng),并說(shuō)明了他設(shè)計(jì)Python的初衷:
1.一門(mén)簡(jiǎn)單直觀的語(yǔ)言并與主要競(jìng)爭(zhēng)者一樣強(qiáng)大
2.開(kāi)源露该,以便任何人都可以為它做貢獻(xiàn)
3.代碼像純英語(yǔ)那樣容易理解
4.適用于短期開(kāi)發(fā)的日常任務(wù)
在Python社區(qū)睬棚,Guido被稱(chēng)為“仁慈的獨(dú)裁者”,Guido的哲學(xué)是:用一種方法解幼,最好是只有一種方法來(lái)做一件事抑党,如果面臨多種選擇,Python開(kāi)發(fā)者一般會(huì)拒絕花俏的語(yǔ)法撵摆,而選擇明確沒(méi)有或很少有歧義的語(yǔ)法底靠。
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">python設(shè)計(jì)目標(biāo)</figcaption>
Python的天性
Python 是一種解釋型、交互式特铝、面向?qū)ο笫钪小⑦m用于初學(xué)者的語(yǔ)言。具有如下特點(diǎn):
1.易于學(xué)習(xí):Python有相對(duì)較少的關(guān)鍵字鲫剿,結(jié)構(gòu)簡(jiǎn)單鳄逾,和一個(gè)明確定義的語(yǔ)法,學(xué)習(xí)起來(lái)更加簡(jiǎn)單灵莲。
2.易于閱讀:Python代碼定義的更清晰雕凹。
3.易于維護(hù):Python的成功在于它的源代碼是相當(dāng)容易維護(hù)的。
4.一個(gè)廣泛的標(biāo)準(zhǔn)庫(kù):Python的最大的優(yōu)勢(shì)之一是豐富的庫(kù)政冻,跨平臺(tái)的枚抵,在UNIX,Windows和Macintosh兼容很好明场。
5.互動(dòng)模式:互動(dòng)模式的支持汽摹,您可以從終端輸入執(zhí)行代碼并獲得結(jié)果的語(yǔ)言,互動(dòng)的測(cè)試和調(diào)試代碼片斷苦锨。
6.可移植:基于其開(kāi)放源代碼的特性逼泣,Python已經(jīng)被移植(也就是使其工作)到許多平臺(tái)嫌套。
7.可擴(kuò)展:如果你需要一段運(yùn)行很快的關(guān)鍵代碼,或者是想要編寫(xiě)一些不愿開(kāi)放的算法圾旨,你可以使用C或C++完成那部分程序,然后從你的Python程序中調(diào)用魏蔗。
8.數(shù)據(jù)庫(kù):Python提供所有主要的商業(yè)數(shù)據(jù)庫(kù)的接口砍的。
9.GUI編程:Python支持GUI可以創(chuàng)建和移植到許多系統(tǒng)調(diào)用。
10.可嵌入:你可以將Python嵌入到C/C++程序莺治,讓你的程序的用戶(hù)獲得"腳本化"的能力廓鞠。
Python的編程方式
- 交互式:對(duì)每個(gè)輸入語(yǔ)句及時(shí)運(yùn)行結(jié)果,適合語(yǔ)法練習(xí)
- 文件式:批量執(zhí)行一組語(yǔ)句并運(yùn)行結(jié)果谣旁,編程的主要方式
實(shí)例1:圓面積的計(jì)算(根據(jù)半徑r計(jì)算圓面積)
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">交互式</figcaption>
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">文件式</figcaption>
實(shí)例2:繪制一組同切圓
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">交互式</figcaption>
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">文件式</figcaption>
實(shí)例3:五角星繪制
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">交互式</figcaption>
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">文件式</figcaption>
Python的優(yōu)缺點(diǎn)
優(yōu)點(diǎn)
簡(jiǎn)單 -- Python 是一種代表簡(jiǎn)單主義思想的語(yǔ)言床佳。閱讀一個(gè)良好的 Python 程序就感覺(jué)像是在讀英語(yǔ)一樣,盡管這個(gè)英語(yǔ)的要求非常嚴(yán)格榄审!Python 的這種偽代碼本質(zhì)是它最大的優(yōu)點(diǎn)之一砌们。它使你能夠?qū)W⒂诮鉀Q問(wèn)題而不是去搞明白語(yǔ)言本身。
易學(xué) -- 就如同你即將看到的一樣搁进,Python 極其容易上手浪感。前面已經(jīng)提到了,Python 有極其簡(jiǎn)單的語(yǔ)法饼问。
免費(fèi)影兽、開(kāi)源 -- Python 是 FLOSS(自由/開(kāi)放源碼軟件)之一。簡(jiǎn)單地說(shuō)莱革,你可以自由地發(fā)布這個(gè)軟件的拷貝峻堰、閱讀它的源代碼、對(duì)它做改動(dòng)盅视、把它的一部分用于新的自由軟件中捐名。FLOSS 是基于一個(gè)團(tuán)體分享知識(shí)的概念。這是為什么 Python 如此優(yōu)秀的原因之一——它是由一群希望看到一個(gè)更加優(yōu)秀的 Python 的人創(chuàng)造并經(jīng)常改進(jìn)著的闹击。
高層語(yǔ)言 -- 當(dāng)你用 Python 語(yǔ)言編寫(xiě)程序的時(shí)候桐筏,你無(wú)需考慮諸如如何管理你的程序使用的內(nèi)存一類(lèi)的底層細(xì)節(jié)。
可移植性 -- 由于它的開(kāi)源本質(zhì)拇砰,Python 已經(jīng)被移植在許多平臺(tái)上(經(jīng)過(guò)改動(dòng)使它能夠工作在不同平臺(tái)上)梅忌。如果你小心地避免使用依賴(lài)于系統(tǒng)的特性,那么你的所有 Python 程序無(wú)需修改就可以在下述任何平臺(tái)上面運(yùn)行除破。這些平臺(tái)包括 Linux牧氮、Windows、FreeBSD瑰枫、Macintosh踱葛、Solaris丹莲、OS/2、Amiga尸诽、AROS甥材、AS/400、BeOS性含、OS/390洲赵、z/OS、Palm OS商蕴、QNX叠萍、VMS、Psion绪商、Acom RISC OS苛谷、VxWorks、PlayStation格郁、Sharp Zaurus腹殿、Windows CE 甚至還有 PocketPC、Symbian 以及 Google 基于 Linux 開(kāi)發(fā)的 Android 平臺(tái)例书!
解釋性 -- 這一點(diǎn)需要一些解釋赫蛇。 Python 語(yǔ)言寫(xiě)的程序不需要編譯成二進(jìn)制代碼,你可以直接從源代碼運(yùn)行程序雾叭。在計(jì)算機(jī)內(nèi)部悟耘,Python 解釋器把源代碼轉(zhuǎn)換成稱(chēng)為字節(jié)碼的中間形式,然后再把它翻譯成計(jì)算機(jī)使用的機(jī)器語(yǔ)言并運(yùn)行织狐。
編譯:將源代碼一次性轉(zhuǎn)換成目標(biāo)代碼的過(guò)程
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">編譯</figcaption>
解釋?zhuān)簩⒃创a逐條轉(zhuǎn)換成目標(biāo)代碼同時(shí)逐條運(yùn)行的過(guò)程
<figcaption style="margin-top: 5px; text-align: center; color: #888; display: block; font-size: 12px; font-family: PingFangSC-Light;">解釋</figcaption>
編譯和解釋的不同:編譯——一次性翻譯暂幼,之后不再需要源代碼(類(lèi)似英文翻譯);解釋——每次程序運(yùn)行時(shí)邊翻譯邊執(zhí)行(類(lèi)似實(shí)時(shí)的同聲傳譯)
面向?qū)ο?/strong> -- Python 既支持面向過(guò)程的編程也支持面向?qū)ο蟮木幊桃破取T凇懊嫦蜻^(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ū)ο缶幊獭?/p>
可擴(kuò)展性 -- 如果你需要你的一段關(guān)鍵代碼運(yùn)行得更快或者希望某些算法不公開(kāi)荡陷,你可以把你的部分程序用 C 或 C++ 編寫(xiě)雨效,然后在你的 Python 程序中使用它們。
豐富的庫(kù) -- Python 標(biāo)準(zhǔn)庫(kù)確實(shí)很龐大废赞。它可以幫助你處理各種工作徽龟,包括正則表達(dá)式、文檔生成唉地、單元測(cè)試据悔、線(xiàn)程传透、數(shù)據(jù)庫(kù)、網(wǎng)頁(yè)瀏覽器极颓、CGI朱盐、FTP、電子郵件菠隆、XML兵琳、XML-RPC、HTML浸赫、WAV 文件、密碼系統(tǒng)赃绊、GUI(圖形用戶(hù)界面)既峡、Tk 和其他與系統(tǒng)有關(guān)的操作。記住碧查,只要安裝了 Python运敢,所有這些功能都是可用的。這被稱(chēng)作 Python 的“功能齊全”理念忠售。除了標(biāo)準(zhǔn)庫(kù)以外传惠,還有許多其他高質(zhì)量的庫(kù),如 wxPython稻扬、Twisted 和 Python 圖像庫(kù)等等卦方。
規(guī)范的代碼 -- Python 采用強(qiáng)制縮進(jìn)的方式使得代碼具有極佳的可讀性。
缺點(diǎn)
- 運(yùn)行速度較慢泰佳,有速度要求的話(huà)盼砍,用 C++ 改寫(xiě)關(guān)鍵部分吧。
- 國(guó)內(nèi)市場(chǎng)較小(國(guó)內(nèi)以 Python 來(lái)做主要開(kāi)發(fā)的逝她,目前只有一些 web2.0 公司)浇坐。但時(shí)間推移,目前很多國(guó)內(nèi)軟件公司黔宛,尤其是游戲公司近刘,也開(kāi)始規(guī)模使用他。
- 中文資料匱乏(好的 Python 中文資料屈指可數(shù)臀晃,現(xiàn)在應(yīng)該變多了)觉渴。托社區(qū)的福,有幾本優(yōu)秀的教材已經(jīng)被翻譯了徽惋,但入門(mén)級(jí)教材多疆拘,高級(jí)內(nèi)容還是只能看英語(yǔ)版。
- 構(gòu)架選擇太多(沒(méi)有像 C# 這樣的官方 .net 構(gòu)架寂曹,也沒(méi)有像 ruby 由于歷史較短哎迄,構(gòu)架開(kāi)發(fā)的相對(duì)集中回右。Ruby on Rails 構(gòu)架開(kāi)發(fā)中小型web程序天下無(wú)敵)。不過(guò)這也從另一個(gè)側(cè)面說(shuō)明漱挚,python比較優(yōu)秀翔烁,吸引的人才多,項(xiàng)目也多旨涝。
更多干貨蹬屹,請(qǐng)關(guān)注“貪心科技AI”公眾號(hào)。