1. 程式人生 > 程式設計 >Python的缺點和劣勢分析

Python的缺點和劣勢分析

Python的短板

雖然Python擁有很多優點,但沒有哪種程式語言能夠勝任所有工 作,因此Python並不能完美地滿足一切需求。如果要確定Python是否適 用於當前場景,還需要了解Python不擅長的領域。

Python不是速度最快的語言

Python的執行速度可能算得上是一個缺點。Python不是一個完全編 譯的語言,而是先編譯為內部位元組碼形式,然後交由Python直譯器來執 行。Python為某些操作給出了高效的實現,例如,用正則表示式解析字 符串,可以做到與自己編寫的任何C語言程式碼一樣快,甚至會更快。但 在大多數情況下,採用Python會比C之類的語言實現更慢。但大家應該 保持以下觀點:對絕大多數應用程式而言,現代計算機的計算能力都是 過剩的。開發速度比程式執行速度更為重要,而Python程式通常編寫速 度會快很多。另外,用C或C ++編寫的模組對Python進行擴充套件也比較容 易,程式當中的CPU密集型部分可以交由這些模組來執行。

Python的庫不算最多

雖然Python自帶了一批優秀的函式庫集合,而且還有很多其他庫可 用,但是Python在庫的數量上並不算領先。像C、Java和Perl之類的程式設計 語言,可用的庫集合數量更為龐大。它們在某些領域提供的解決方案是 Python所沒有的,或者Python可能只提供了其中的一種可選方案。不過 這些往往是相當專業的領域,而Python是很容易擴充套件的,既可以用 Python,也可以用C或其他語言的現有庫。對於幾乎所有的常規計算問 題,Python庫的支援能力都非常出色。

Python在編譯時不檢查變數型別

與某些其他程式語言不同,Python變數不像容器那樣工作,而更像 是引用整數、字串、類例項等各類物件的標籤。這表示這些物件本身 雖然是有型別的,但引用它們的變數並沒有與型別進行繫結。變數x可 能在某一行程式碼中引用一個字串,而在另一行程式碼中引用一個整數:

>>> x = "2" 
>>> x '2'   ⇽--- x為字串"2" 
>>> x = int(x) >>> x 
2    ⇽--- 現在x為整數值2

Python將型別與物件關聯,而不是與變數關聯,這就意味著Python 直譯器無法識別出變數型別不符的錯誤。假設變數count本來是用來保 存整數的,但如果將字串"two"賦給它,在Python裡也完全沒問題。 傳統的程式設計師將這種處理方式算作一個缺點,因為對程式碼失去了額外的 免費檢查。但是這種錯誤通常不難發現和修復,Python的程式碼檢測功能 可以避免型別錯誤的發生。大多數Python程式設計師都認為,動態型別的靈 活性是划得來的。

Python對移動應用的支援不足

在過去的10年中,移動裝置的數量和種類都出現了爆炸式的增長, 到處都是智慧手機、平板電腦、平板手機、Chromebook,執行的操作 系統也是五花八門。Python在移動計算領域並不算強大。雖然有解決方 案可選,但在移動裝置上執行Python並不總是能一帆風順,用Python編 寫和釋出商業應用還存在問題。

Python對多處理器的利用不充分

現在多核處理器已經普及,在很多情況下也都會帶來效能的明顯提 升。但是,由於具有名為全域性直譯器鎖(global interpreter lock,GIL) 的特性,Python的標準版本並沒有按照多核心來進行設計。詳情請檢視 David Beazley、Larry Hastings等人關於GIL的討論視訊,或者訪問 Python wiki裡的GIL頁面。儘管用Python可以執行併發程序,但如果需 要“開箱即用”的併發能力,Python可能並不合適。

以上就是全部相關知識點,感謝大家的學習和對我們的支援。