Python的缺點(diǎn)和劣勢(shì)分析
Python的短板
雖然Python擁有很多優(yōu)點(diǎn),但沒(méi)有哪種編程語(yǔ)言能夠勝任所有工 作,因此Python并不能完美地滿足一切需求。如果要確定Python是否適 用于當(dāng)前場(chǎng)景,還需要了解Python不擅長(zhǎng)的領(lǐng)域。
Python不是速度最快的語(yǔ)言
Python的執(zhí)行速度可能算得上是一個(gè)缺點(diǎn)。Python不是一個(gè)完全編 譯的語(yǔ)言,而是先編譯為內(nèi)部字節(jié)碼形式,然后交由Python解釋器來(lái)執(zhí) 行。Python為某些操作給出了高效的實(shí)現(xiàn),例如,用正則表達(dá)式解析字 符串,可以做到與自己編寫(xiě)的任何C語(yǔ)言代碼一樣快,甚至?xí)臁5?在大多數(shù)情況下,采用Python會(huì)比C之類(lèi)的語(yǔ)言實(shí)現(xiàn)更慢。但大家應(yīng)該 保持以下觀點(diǎn):對(duì)絕大多數(shù)應(yīng)用程序而言,現(xiàn)代計(jì)算機(jī)的計(jì)算能力都是 過(guò)剩的。開(kāi)發(fā)速度比程序運(yùn)行速度更為重要,而Python程序通常編寫(xiě)速 度會(huì)快很多。另外,用C或C ++編寫(xiě)的模塊對(duì)Python進(jìn)行擴(kuò)展也比較容 易,程序當(dāng)中的CPU密集型部分可以交由這些模塊來(lái)運(yùn)行。
Python的庫(kù)不算最多
雖然Python自帶了一批優(yōu)秀的函數(shù)庫(kù)集合,而且還有很多其他庫(kù)可 用,但是Python在庫(kù)的數(shù)量上并不算領(lǐng)先。像C、Java和Perl之類(lèi)的編程 語(yǔ)言,可用的庫(kù)集合數(shù)量更為龐大。它們?cè)谀承╊I(lǐng)域提供的解決方案是 Python所沒(méi)有的,或者Python可能只提供了其中的一種可選方案。不過(guò) 這些往往是相當(dāng)專(zhuān)業(yè)的領(lǐng)域,而Python是很容易擴(kuò)展的,既可以用 Python,也可以用C或其他語(yǔ)言的現(xiàn)有庫(kù)。對(duì)于幾乎所有的常規(guī)計(jì)算問(wèn) 題,Python庫(kù)的支持能力都非常出色。
Python在編譯時(shí)不檢查變量類(lèi)型
與某些其他編程語(yǔ)言不同,Python變量不像容器那樣工作,而更像 是引用整數(shù)、字符串、類(lèi)實(shí)例等各類(lèi)對(duì)象的標(biāo)簽。這表示這些對(duì)象本身 雖然是有類(lèi)型的,但引用它們的變量并沒(méi)有與類(lèi)型進(jìn)行綁定。變量x可 能在某一行代碼中引用一個(gè)字符串,而在另一行代碼中引用一個(gè)整數(shù):
>>> x = "2" >>> x '2' ⇽--- x為字符串"2" >>> x = int(x) >>> x 2 ⇽--- 現(xiàn)在x為整數(shù)值2
Python將類(lèi)型與對(duì)象關(guān)聯(lián),而不是與變量關(guān)聯(lián),這就意味著Python 解釋器無(wú)法識(shí)別出變量類(lèi)型不符的錯(cuò)誤。假設(shè)變量count本來(lái)是用來(lái)保 存整數(shù)的,但如果將字符串"two"賦給它,在Python里也完全沒(méi)問(wèn)題。 傳統(tǒng)的程序員將這種處理方式算作一個(gè)缺點(diǎn),因?yàn)閷?duì)代碼失去了額外的 免費(fèi)檢查。但是這種錯(cuò)誤通常不難發(fā)現(xiàn)和修復(fù),Python的代碼檢測(cè)功能 可以避免類(lèi)型錯(cuò)誤的發(fā)生。大多數(shù)Python程序員都認(rèn)為,動(dòng)態(tài)類(lèi)型的靈 活性是劃得來(lái)的。
Python對(duì)移動(dòng)應(yīng)用的支持不足
在過(guò)去的10年中,移動(dòng)設(shè)備的數(shù)量和種類(lèi)都出現(xiàn)了爆炸式的增長(zhǎng), 到處都是智能手機(jī)、平板電腦、平板手機(jī)、Chromebook,運(yùn)行的操作 系統(tǒng)也是五花八門(mén)。Python在移動(dòng)計(jì)算領(lǐng)域并不算強(qiáng)大。雖然有解決方 案可選,但在移動(dòng)設(shè)備上運(yùn)行Python并不總是能一帆風(fēng)順,用Python編 寫(xiě)和發(fā)布商業(yè)應(yīng)用還存在問(wèn)題。
Python對(duì)多處理器的利用不充分
現(xiàn)在多核處理器已經(jīng)普及,在很多情況下也都會(huì)帶來(lái)性能的明顯提 升。但是,由于具有名為全局解釋器鎖(global interpreter lock,GIL) 的特性,Python的標(biāo)準(zhǔn)版本并沒(méi)有按照多內(nèi)核來(lái)進(jìn)行設(shè)計(jì)。詳情請(qǐng)查看 David Beazley、Larry Hastings等人關(guān)于GIL的討論視頻,或者訪問(wèn) Python wiki里的GIL頁(yè)面。盡管用Python可以運(yùn)行并發(fā)進(jìn)程,但如果需 要“開(kāi)箱即用”的并發(fā)能力,Python可能并不合適。
以上就是全部相關(guān)知識(shí)點(diǎn),感謝大家的學(xué)習(xí)和對(duì)腳本之家的支持。
相關(guān)文章
python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法
本篇文章主要介紹了python中Pycharm 輸出中文或打印中文亂碼現(xiàn)象的解決辦法 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06
詳解【python】str與json類(lèi)型轉(zhuǎn)換
這篇文章主要介紹了【python】str與json類(lèi)型轉(zhuǎn)換,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
python筆記_將循環(huán)內(nèi)容在一行輸出的方法
今天小編就為大家分享一篇python筆記_將循環(huán)內(nèi)容在一行輸出的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-08-08
python中startswith()和endswith()的用法詳解
Python startswith() 方法用于檢查字符串是否是以指定子字符串開(kāi)頭,endswith()方法主要是用于判斷字符串是否以指定字符或子字符串結(jié)尾,常用于判斷文件類(lèi)型,對(duì)python startswith()和endswith()用法相關(guān)知識(shí)感興趣的朋友一起看看吧2021-10-10
Python使用pyecharts繪制世界地圖,省級(jí)地圖,城市地圖實(shí)例詳解
這篇文章主要介紹了如何使用Python中的pyecharts庫(kù)繪制世界地圖、中國(guó)地圖、省級(jí)地圖、市級(jí)地圖,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起動(dòng)手試一試2022-02-02
使用python快速獲取PDF文件頁(yè)數(shù)的辦法
有時(shí)在處理或打印一個(gè)PDF文檔之前,你可能需要先知道該文檔包含多少頁(yè),對(duì)于程序員來(lái)說(shuō),編寫(xiě)腳本來(lái)完成這項(xiàng)工作會(huì)更加高效,本文就介紹一個(gè)使用Python快速獲取PDF文件頁(yè)數(shù)的辦法,需要的朋友可以參考下2024-03-03
Python中Flask-RESTful編寫(xiě)API接口(小白入門(mén))
這篇文章主要介紹了Python中Flask-RESTful編寫(xiě)API接口(小白入門(mén)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12

