python中的模塊、庫、包有什麼區別?

scrapy、flask、Django、numpy、scipy、NLTK、jieba分別屬於哪一類?


python模塊是:

自我包含並且有組織的代碼片段為模塊。

表現形式為:寫的代碼保存為文件。這個文件就是一個模塊。sample.py 其中文件名smaple為模塊名字。

python包是:

包是一個有層次的文件目錄結構,它定義了由n個模塊或n個子包組成的python應用程序執行環境。

通俗一點:包是一個包含__init__.py 文件的目錄,該目錄下一定得有這個__init__.py文件和其它模塊或子包。

python庫是參考其它編程語言的說法,就是指python中的完成一定功能的代碼集合,供用戶使用的代碼組合。在python中是包和模塊的形式。

一般按照API的慣例來設計庫。

應用程序介面(英語:Application Programming Interface,簡稱:API),又稱為應用編程介面,就是軟體系統不同組成部分銜接的約定。由於近年來軟體的規模日益龐大,常常需要把複雜的系統劃分成小的組成部分,編程介面的設計十分重要。程序設計的實踐中,編程介面的設計首先要使軟體系統的職責得到合理劃分。良好的介面設計可以降低系統各部分的相互依賴,提高組成單元的內聚性,降低組成單元間的耦合程度,從而提高系統的維護性和擴展性。

Django,flask這些是框架。

框架(framework)是一個基本概念上的結構,用於去解決或者處理複雜的問題。這個廣泛的定義使用的十分流行,尤其在軟體概念。框架也能用於機械結構。


說中文是沒法讓人理解的,我猜你指的是 module、lib 和 package

module:一個 .py 文件就是個 module

lib:抽象概念,和另外兩個不是一類,只要你喜歡,什麼都是 lib,就算只有個 hello world

package:就是個帶 __init__.py 的文件夾,並不在乎裡面有什麼,不過一般來講會包含一些 packages/modules

scrapy、flask、Django、numpy、scipy、NLTK、jieba 在你的語境下,一般都被認為是 lib,因為關注點不是他們的代碼是怎麼組織的。


簡單講,Package是由很多module組成,來實現某種功能,modules由函數和類組成。庫是抽象概念,也可以是各種模塊組成。


推薦閱讀:

原來你還會python啊?
C++實現神經網路之貳—前向傳播和反向傳播
為什麼說 Python 是數據科學的發動機(一)發展歷程(附視頻中字)
通俗 Python 設計模式——享元模式
為什麼Python類成員的調用和聲明必須有"this"?

TAG:編程語言 | Python | Python庫 |