Sự khác biệt giữa mô-đun và thư viện trong Python là gì?


86

Tôi có nền tảng về Java và tôi mới làm quen với Python. Tôi muốn đảm bảo rằng tôi hiểu đúng thuật ngữ Python trước khi tiếp tục.

Sự hiểu biết của tôi về một mô-đun là: một tập lệnh có thể được nhập bởi nhiều tập lệnh, để giúp việc đọc dễ dàng hơn. Giống như trong java, bạn có một lớp và lớp đó có thể được nhập bởi nhiều lớp khác.

Hiểu biết của tôi về thư viện là: Một thư viện chứa nhiều mô-đun được phân tách theo cách sử dụng của nó.

Câu hỏi của tôi là: Các thư viện có giống như các gói không, nơi bạn có một gói, ví dụ được gọi là food, sau đó:

  • chocolate.py
  • sweets.py
  • biscuts.py

được chứa trong foodgói?

Hay các thư viện sử dụng các gói, vì vậy nếu chúng ta có một gói khác drink:

  • milk.py
  • juice.py

chứa trong gói. Bao librarygồm hai gói?

Ngoài ra, một giao diện lập trình ứng dụng (API) thường chứa một tập hợp các thư viện nằm ở đầu phân cấp:

  1. API
  2. Thư viện
  3. Gói
  4. Mô-đun
  5. Kịch bản

Vì vậy, một API sẽ bao gồm tất cả từ 2-5?


3
Python sử dụng thuật ngữ "gói" và không có nhiều "thư viện" (ngoài Thư viện chuẩn).
John Zwinck

Câu trả lời:


76

Từ Hướng dẫn Python - Mô-đun

  • Mô-đun :

    Mô-đun là một tệp chứa các định nghĩa và câu lệnh Python. Tên tệp là tên mô-đun có .pythêm hậu tố .

  • Đóng gói :

    Các gói là một cách cấu trúc không gian tên mô-đun của Python bằng cách sử dụng “tên mô-đun có dấu chấm”.

Nếu bạn đọc tài liệu cho importcâu lệnh sẽ cung cấp thêm chi tiết, ví dụ:

Python chỉ có một loại đối tượng mô-đun và tất cả các mô-đun đều thuộc loại này, bất kể mô-đun được triển khai bằng Python, C hay thứ gì khác. Để giúp tổ chức các mô-đun và cung cấp hệ thống phân cấp đặt tên, Python có một khái niệm về các gói.

Bạn có thể coi các gói là các thư mục trên hệ thống tệp và mô-đun là tệp trong các thư mục, nhưng đừng coi điều này tương tự theo nghĩa đen vì các gói và mô-đun không cần bắt nguồn từ hệ thống tệp. Đối với mục đích của tài liệu này, chúng tôi sẽ sử dụng sự tương tự thuận tiện này của các thư mục và tệp. Giống như thư mục hệ thống tệp, các gói được tổ chức phân cấp và bản thân các gói có thể chứa các gói con, cũng như các mô-đun thông thường.

Điều quan trọng cần lưu ý là tất cả các gói đều là mô-đun, nhưng không phải tất cả các mô-đun đều là gói. Hay nói một cách khác, các gói chỉ là một loại mô-đun đặc biệt. Cụ thể, bất kỳ mô-đun nào có chứa một __path__thuộc tính được coi là một gói.

Do đó, thuật ngữ này moduleđề cập đến một thực thể cụ thể: đó là một lớp có các cá thể là moduleđối tượng bạn sử dụng trong các chương trình python. Nó cũng được sử dụng, bằng cách tương tự, để chỉ tệp trong hệ thống tệp mà từ đó các phiên bản này "được tạo ra".

Thuật ngữ script được sử dụng để chỉ một mô-đun có mục đích được thực thi. Nó có cùng nghĩa với "chương trình" hoặc "ứng dụng", nhưng nó thường được dùng để mô tả các chương trình đơn giản và nhỏ (tức là một tệp duy nhất có nhiều nhất là hàng trăm dòng). Viết một kịch bản mất vài phút hoặc vài giờ.

Thuật ngữ thư viện chỉ đơn giản là một thuật ngữ chung cho một loạt mã được thiết kế với mục đích có thể được sử dụng bởi nhiều ứng dụng. Nó cung cấp một số chức năng chung có thể được sử dụng bởi các ứng dụng cụ thể.

Khi một mô-đun / gói / thứ gì đó khác được "xuất bản", người ta thường coi nó như một thư viện. Thường thì các thư viện chứa một gói hoặc nhiều gói liên quan, nhưng nó thậm chí có thể là một mô-đun duy nhất.

Các thư viện thường không cung cấp bất kỳ chức năng cụ thể nào, tức là bạn không thể "chạy thư viện".

API có thể có các ý nghĩa khác nhau tùy thuộc vào ngữ cảnh. Ví dụ:

  • nó có thể xác định một giao thức như DB API hoặc giao thức đệm .
  • nó có thể xác định làm thế nào để tương tác với một ứng dụng (ví dụ như Python/C API)
  • khi liên quan đến một thư viện / gói, nó chỉ đơn giản là giao diện do thư viện đó cung cấp cho chức năng của nó (tập hợp các hàm / lớp / hằng số, v.v.)

Trong mọi trường hợp, một API không phải là mã python. Đó là một mô tả có thể ít nhiều trang trọng.


38

Chỉ góimô-đun có ý nghĩa được xác định rõ ràng dành riêng cho Python.

  1. Một API không phải là một bộ sưu tập của mã cho mỗi gia nhập - đó là giống như một "giao thức" đặc điểm kỹ thuật như thế nào phần khác nhau (thường là thư viện) giao tiếp với nhau. Có một vài API "tiêu chuẩn" đáng chú ý trong python. Ví dụ: API DB

  2. Theo tôi, thư viện là bất cứ thứ gì không phải là ứng dụng - trong python, thư viện là một mô-đun - thường là với các mô-đun con . Phạm vi của một thư viện khá thay đổi - ví dụ như thư viện tiêu chuẩn python rất rộng (với khá nhiều mô-đun con) trong khi có rất nhiều thư viện mục đích duy nhất trong PyPi, ví dụ như một backport của collections.OrderedDictcho py <2,7

  3. Một gói là một tập hợp các mô-đun python trong một không gian tên chung. Trong thực tế, một mô-đun được tạo bằng cách đặt nhiều mô-đun python trong một thư mục với một __init__.pymô-đun (tệp) đặc biệt .

  4. Một mô-đun là một tập tin duy nhất của mã python đó có nghĩa là để được nhập khẩu . Đây là một chút đơn giản hóa vì trong thực tế, có khá nhiều mô-đun phát hiện khi nào chúng được chạy dưới dạng tập lệnh và thực hiện điều gì đó đặc biệt trong trường hợp đó.

  5. Tập lệnh là một tệp mã python duy nhất được thực thi như chương trình 'chính'.

  6. Nếu bạn có một bộ mã kéo dài nhiều tệp, có thể bạn có một ứng dụng thay vì tập lệnh.


1

Thư viện: Nó là một tập hợp các mô-đun.

(Thư viện chứa các mô-đun được xây dựng trong (viết bằng C) + mô-đun được viết bằng python).

Mô-đun: Mỗi một tập hợp các bộ phận được tiêu chuẩn hóa hoặc các đơn vị độc lập có thể được sử dụng để xây dựng một cấu trúc phức tạp hơn.

Phát biểu bằng ngôn ngữ chính thức, Một mô-đun được thiết lập dòng mã được sử dụng cho một mục đích cụ thể và có thể được sử dụng trong các chương trình khác như nó có, để tránh khô ( D on't R EPEAT Y ourself) như một đội và tập trung vào yêu cầu chính. nguồn

API là giao diện để các ứng dụng khác tương tác với thư viện của bạn mà không cần có quyền truy cập trực tiếp.

Về cơ bản, gói là một thư mục chứa các tệp.

Script có nghĩa là một loạt các lệnh trong một tệp duy nhất.


0

Tôi sẽ cố gắng trả lời điều này mà không sử dụng các thuật ngữ mà những người mới bắt đầu sử dụng sớm nhất và giải thích lý do hoặc cách họ sử dụng khác nhau, cùng với cách sử dụng các thuật ngữ "chính thức" và / hoặc được hiểu nhất hoặc thống nhất.

Nó có thể gây nhầm lẫn, và tôi cũng đang suy nghĩ lung tung, vì vậy đừng nghĩ nhiều về nó. Dù sao thì ngữ cảnh cũng quan trọng.

Thư viện - Thông thường sẽ đề cập đến thư viện chung hoặc một bộ sưu tập khác được tạo với định dạng và cách sử dụng tương tự. Thư viện tổng hợp là tổng hợp các Mô-đun 'tiêu chuẩn', phổ biến và được sử dụng rộng rãi, phù thủy có thể được coi là công cụ tệp đơn lẻ, hiện tại hoặc là đường tắt giúp mọi thứ trở nên khả thi hoặc nhanh hơn. Thư viện chung là một tùy chọn mà hầu hết mọi người bật khi cài đặt Python. Vì nó có tên là "Thư viện tổng hợp Python" nên nó được sử dụng thường xuyên với cấu trúc và ý tưởng tương tự. Witch chỉ đơn giản là có một loạt các Mô-đun, thậm chí có thể được nhóm lại với nhau, thường là trong một danh sách. Danh sách thường là để tải chúng xuống. Nói chung đó chỉ là các tệp liên quan, có cùng sở thích. Đó là cách dễ nhất để mô tả nó.

Mô-đun - Mô-đun đề cập đến một tệp. Tệp có tập lệnh 'trong đó' và tên của tệp là tên của mô-đun, các tệp Python kết thúc bằng .py. Tất cả các tệp chứa là mã chạy cùng nhau để tạo ra điều gì đó xảy ra, bằng cách sử dụng các hàm, chuỗi vv. Các mô-đun chính mà bạn có thể thấy thường xuyên nhất là phổ biến vì chúng là các mô-đun đặc biệt có thể lấy thông tin từ các tệp / mô-đun khác. Thật là khó hiểu vì tên của tệp và mô-đun bằng nhau và chỉ cần thả .py. Thực sự nó chỉ là mã bạn có thể sử dụng như một lối tắt được viết bởi ai đó để thực hiện điều gì đó dễ dàng hơn hoặc có thể.

Gói - Đây là một thuật ngữ được sử dụng để nói chung đôi khi, mặc dù ngữ cảnh tạo ra sự khác biệt. Việc sử dụng phổ biến nhất theo kinh nghiệm của tôi là nhiều mô-đun (hoặc tệp) được nhóm lại với nhau. Tại sao chúng được nhóm lại với nhau có thể vì một vài lý do, đó là khi ngữ cảnh quan trọng. Đây là những cách tôi đã nhận thấy (các) gói thuật ngữđã sử dụng. Chúng là một nhóm các mô-đun đã tải xuống, được tạo và / hoặc được lưu trữ. Tất cả đều có thể đúng hoặc chỉ 1, nhưng thực sự nó chỉ là một tệp tham chiếu đến các tệp khác, cần phải có cấu trúc hoặc định dạng chính xác và toàn bộ tổng đó là chính gói, được cài đặt hoặc có thể đã được bao gồm trong thư viện tổng hợp python. Một gói có thể chứa các mô-đun (tệp .py) vì chúng phụ thuộc vào nhau và đôi khi có thể không hoạt động chính xác hoặc hoàn toàn không hoạt động. Luôn có một mục tiêu chung cho mọi phần (mô-đun / tệp) của một gói và tổng của tất cả các phần là chính gói đó.

Thông thường nhất trong các Gói Python là Mô-đun, vì tên gói là tên của mô-đun được sử dụng để kết nối tất cả các phần. Vì vậy, bạn có thể nhập một gói vì nó là một mô-đun, cũng cho phép nó gọi các mô-đun khác, không phải là gói vì chúng chỉ thực hiện một chức năng nhất định hoặc tác vụ không liên quan đến các tệp khác. Các gói có một mục tiêu và mỗi mô-đun làm việc cùng nhau để đạt được mục tiêu cuối cùng đó.

Hầu hết sự nhầm lẫn đến từ tên tệp đơn giản hoặc tiền tố của tệp, được sử dụng làm tên mô-đun sau đó lại là tên gói.

Hãy nhớ rằng có thể cài đặt Mô-đun và Gói. Thư viện thường là một thuật ngữ chung để liệt kê hoặc định dạng một nhóm mô-đun và gói. Giống như thư viện tổng hợp Pythons. Hệ thống phân cấp sẽ không hoạt động, các API không thực sự thuộc về và nếu bạn làm vậy thì chúng có thể ở bất cứ đâu và mọi thiết bị liên quan đến Tập lệnh, Mô-đun và Gói, thư viện từ ngữ là một từ chung chung, dễ áp ​​dụng cho nhiều thứ, cũng làm cho API có thể để ngồi trên hoặc dưới đó. Một số Mô-đun có thể dựa trên mã khác và đó là lần duy nhất tôi nghĩ rằng nó sẽ liên quan đến một cuộc thảo luận liên quan đến Python thuần túy.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.