1. 程式人生 > >Python 的愛與恨:那些不得不說的優缺點

Python 的愛與恨:那些不得不說的優缺點


顯著的優點

Python 語言擁有諸多的優點,這其中,以下幾個優點特別顯著:


  1. 簡單易學: Python 語言相對於其他程式語言來說,屬於比較容易學習的一門程式語言,它注重的是如何解決問題而不是程式語言的語法和結構。正是因為 Python 語言簡單易學,所以,已經有越來越多的初學者選擇 Python 語言作為程式設計的入門語言。例如,在浙江省 2017 年高中資訊科技改革中,《演算法與程式設計》課程將使用 Python 語言替換原有的 VB 語言。

  2. 語法優美: Python 語言力求程式碼簡潔、優美。在 Python 語言中,採用縮排來標識程式碼塊,通過減少無用的大括號,去除語句末尾的分號等視覺雜訊,使得程式碼的可讀性顯著提高。閱讀一段良好的 Python 程式就感覺像是在讀英語一樣,它使你能夠專注於解決問題,而不用太糾結程式語言本身的語法。

  3. 豐富強大的庫: Python 語言號稱自帶電池(Battery Included),寓意是 Python 語言的類庫非常的全面,包含了解決各種問題的類庫。無論實現什麼功能,都有現成的類庫可以使用。如果一個功能比較特殊,標準庫沒有提供相應的支援,那麼,很大概率也會有相應的開源專案提供了類似的功能。合理使用 Python 的類庫和開源專案,能夠快速的實現功能,滿足業務需求。

  4. 開發效率高: Python 的各個優點是相輔相成的。例如,Python 語言因為有了豐富強大的類庫,所以,Python 的開發效率能夠顯著提高。相對於 C、C++ 和 Java 等編譯語言,Python 開發者的效率提高了數倍。實現相同的功能,Python 程式碼的檔案往往只有 C、C++ 和 Java 程式碼的 1/5~1/3。雖然 Python 語言擁有很多吸引人的特性,但是,各大網際網路公司廣泛使用 Python 語言,很大程度上是因為 Python 語言開發效率高這個特點。開發效率高的語言,能夠更好的滿足網際網路快速迭代的需求,因此,Python 語言在網際網路公司使用非常廣泛。

  5. 應用領域廣泛: Python 語言的另一大優點就是應用領域廣泛,工程師可以使用 Python 做很多的事情。例如,Web 開發、網路程式設計、自動化運維、Linux 系統管理、資料分析、科學計算、人工智慧、機器學習等等。Python 語言介於指令碼語言和系統語言之間,我們根據需要,既可以將它當做一門指令碼語言來編寫指令碼,也可以將它當做一個系統語言來編寫服務。


不可忽視的缺點

毫無疑問,Python 確實有用很多的優點,每一個優點看起來都非常吸引人。但是,Python 並不是沒有缺點的,最主要的缺點有以下幾個:


  1. Python 的執行速度不夠快。當然,這也不是一個很嚴重的問題,一般情況下,我們不會拿 Python 語言與 C/C++ 這樣的語言進行直接比較。在 Python 語言的執行速度上,一方面,網路或磁碟的延遲,會抵消掉部分 Python 本身消耗的時間;另一方面,因為 Python 特別容易和 C 結合起來,因此,我們可以通過分離一部分需要優化速度的應用,將其轉換為編譯好的擴充套件,並在整個系統中使用 Python 指令碼將這部分應用連線起來,以提高程式的整體效率。
  2. Python 的 GIL 鎖限制併發: Python 的另一個大問題是,對多處理器支援不好。如果讀者接觸 Python 時間比較長,那麼,一定聽說過 GIL 這個詞。GIL 是指 Python 全域性直譯器鎖(Global Interpreter Lock),當 Python 的預設直譯器要執行位元組碼時,都需要先申請這個鎖。這意味著,如果試圖通過多執行緒擴充套件應用程式,將總是被這個全域性直譯器鎖限制。當然,我們可以使用多程序的架構來提高程式的併發,也可以選擇不同的 Python 實現來執行我們的程式。
  3. Python 2 與 Python 3 不相容: 如果一個普通的軟體或者庫,不能夠做到後向相容,那麼,它會被使用者無情的拋棄了。在 Python 中,一個槽點是 Python 2 與 Python 3 不相容。因為 Python 沒有向後相容,給所有的 Python 工程師帶來了無數的煩惱。

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

相關推薦

Python那些不得不說的優缺點

顯著的優點Python 語言擁有諸多的優點,這其中,以下幾個優點特別顯著:簡單易學: Python 語言相對於其他程式語言來說,屬於比較容易學習的一門程式語言,它注重的是如何解決問題而不是程式語言的語法和結構。正是因為 Python 語言簡單易學,所以,已經有越來越多的初學者

Storyboard的

儘管現在已經是Apple將Storyboard整合進Xcode中的第四個年頭,大家對於Storyboard的評價仍然褒貶不一。有早期就選擇轉向Storyboard用於UI開發的國內業界領頭人物,也有建立專案就立馬刪除Storyboard的大牛。我經歷過純程式碼佈局,同時也在多個多人合作專案中使用Sto

專案之

3個人做這個專案,程式碼越做越大,做了一年多 cs程式碼量已經超過50M,剩下兩個頁面 只有一個感覺,累 測試資料1小時20萬條記錄,儲存過程查詢處理,效果還不錯 (測試前資料庫(包括日誌檔案)總大小為7.5M; 測試用時:41分鐘21秒,測試後資料庫總量達156M; 測試

python學習篇python簡介入門

1-1 一行代碼 組合 python代碼 index python語言 cmd https turn 簡介與特點 python語言是由Guido van Rossum在1989年開發的,並最終於1991年初發表。 python是一種面向對象、解釋型的計算機語言,語法簡潔清

HTC“賣身”那些輝煌、落寞終結

htc9月21日,HTC董事會決議通過與谷歌簽訂合作協議書。前者專註Pixel手機設計研發人才加入谷歌,HTC知識產權非專屬授權予Google使用,交易作價11億美元。事實上,這與微軟收購諾基亞不同,並非是HTC將自身的手機業務完全出售給谷歌,只是谷歌打包帶走了HTC的高端人才和部分產權的使用權。其實就價格來

python django學習二 static文件處理線上部署測試

image 運行 color 文件處理 收集 scrip 線上部署 ges sta static文件相關操作涉及:a. 文件位置與訪問路徑映射b. setting.py與static相關配置 STATIC_URLSTATIC_ROOTSTATICFILES_DIRS

Python封裝函數實現刪除一個list裏面的重復,且元素順序要原list順序對應

列表 list封裝函數:實現刪除一個list裏面的重復,且元素順序要與原list順序對應 代碼:def info(l):l1 = l[:]for i in range(len(l)):v = l.count(l[i])if l1.count(l[i]) > 1:for j in range(1, v):

python函數註釋, ->

圖片 color ges folders png b- 沒有 兩種 意思 python函數註釋, :與 -> 如圖:add1函數中的:意思是:函數中的參數說明    add2函數中:->意思是:函數的返回

Python的進階copydeepcopy區別

對他 可能 並不會 ID wfq .html 因此 陌生 iba copy()與deepcopy()之間的區分必須要涉及到python對於數據的存儲方式。 首先直接上結論: —–我們尋常意義的復制就是深復制,即將被復制對象完全再復制一遍作為獨立的新個體單獨存在。所以改變原有

PYTHON模塊】協程greenlet、gevent

left imp test bind lse 調用 編程模型 send 地址 協程:又稱為微線程,英文名稱Coroutine。作用:它擁有自己的寄存器上下文和棧,能保留上一次調用時的狀態,可以隨時暫停程序,隨時切換回來。優點: ?無需線程上下文切換的開銷 ?無需

Learing-Python【1】交互式環境變量的使用

小寫 能夠 ise b- raise src cal 啟動 finall 一、執行Python程序的兩種方式 1. 交互式環境,打開cmd,輸入python2或python3,顯示提示符 “>>>”。   特點:輸出代碼立即執行

Python運維開發運算子資料型別(二)

python物件的相關術語: python程式中儲存的所有資料都是圍繞物件這個概念展開的: 程式中儲存的所有資料都是物件 每個物件都有一個身份、一個型別和一個值     例如,school='MaGe Linux'會以'MaGe Linux'建立一個字串物件,其身份是指向它在記憶體中所處位

Python物件技巧(2)拓展子類屬性

更多的時候,我們需要拓展父類中property的功能。 class Person: def __init__(self, name): self.name = name # Getter funtion @property def n

Python物件技巧(1)字串格式化、封裝屬性名、可管理的屬性、呼叫父類方法

1. 自定義字串的格式化 _formats = { 'ymd' : '{d.year}-{d.month}-{d.day}', 'mdy' : '{d.month}/{d.day}/{d.year}', 'dmy' : '{d.day}/{d.month}/{d.ye

Python編碼格式理解encodingdecoding

在Python對txt文件處理的時候,txt文件預設為gb2312編碼,在開啟檔案的時候,將其轉換為Utf-8編碼,才能進一步處理。 fi=open("c:/","r",encoding="utf-8") 常用的幾種編碼關係如下: 因為開啟的檔案已經轉換為utf-8,所以寫入的時候

RPython手牽手資料框的構建、讀取基本描述

在雙11免費Get新知識的人,才是最會花錢的人,也將是最會賺錢的人! 別的專場拼消費,唯有天善學院,投資你的未來! ▲詳情點選▲ 作者:黃天元,復旦大學博士在讀,目前研究涉及文字挖掘、社交網路分析和機器學習等。希望與大家分享學習經驗,推廣並加深R語言在業界的應用。

python 學習彙總59高階函式類的關係(初級學習- tcy)

 目錄:  1. class定義 2. 內部類 3.外部定義函式 4.高階函式與類的關係 5.物件記憶體管理 6.類作用域 7.使用輸出引數 8.類屬性 9.類特性 10.描述符 11.檢視類屬性 12.繼承 13.型別檢測測試,檢視父子類 15.元類 16.基類 17.類裝

Python基礎學習二列表,字典,深拷貝淺拷貝

④使用pop()方法刪除元素:pop方法用於移出列表中的一個元素(預設是最後一個元素),可以指定元素索引,並且返回該元素的值。     使用del語句刪除元素:如果知道要刪除的元素在列表中的位置,可使用del語句刪除元素,元素一旦被刪除之後就再也無法訪問。  

吳裕雄 資料探勘分析案例實戰(3)——python數值計算工具Numpy

# 匯入模組,並重命名為npimport numpy as np# 單個列表建立一維陣列arr1 = np.array([3,10,8,7,34,11,28,72])print('一維陣列:\n',arr1)# 一維陣列元素的獲取print(arr1[[2,3,5,7]]) # 巢狀元組建立二維陣列ar

吳裕雄 資料探勘分析案例實戰(4)——python資料處理工具Pandas

# 匯入模組import pandas as pdimport numpy as np # 構造序列gdp1 = pd.Series([2.8,3.01,8.99,8.59,5.18])print(gdp1)# 取出gdp1中的第一、第四和第五個元素print('行號風格的序列:\n',gdp1[[0,3,