Các gói Python: Làm thế nào để tạo và nhập chúng?

Trong bài viết này, bạn sẽ học cách chia cơ sở mã của mình thành các mô-đun sạch sẽ, hiệu quả bằng cách sử dụng các gói Python. Ngoài ra, bạn sẽ học cách nhập và sử dụng các gói của riêng bạn hoặc bên thứ ba trong chương trình Python của bạn.

Video: Các gói Python: Tổ chức mã của bạn

Các gói là gì?

Chúng tôi thường không lưu trữ tất cả các tệp trên máy tính của mình ở cùng một vị trí. Chúng tôi sử dụng hệ thống phân cấp thư mục được tổ chức tốt để truy cập dễ dàng hơn.

Các tệp tương tự được giữ trong cùng một thư mục, ví dụ: chúng tôi có thể giữ tất cả các bài hát trong thư mục " nhạc ". Tương tự như vậy, Python có các gói cho thư mục và mô-đun cho tệp.

Khi chương trình ứng dụng của chúng tôi phát triển về kích thước lớn hơn với rất nhiều mô-đun, chúng tôi đặt các mô-đun tương tự trong một gói và các mô-đun khác nhau trong các gói khác nhau. Điều này làm cho một dự án (chương trình) dễ quản lý và rõ ràng về mặt khái niệm.

Tương tự, vì một thư mục có thể chứa các thư mục con và tệp, một gói Python có thể có các gói con và mô-đun.

Một thư mục phải chứa một tệp được đặt tên __init__.pyđể Python coi nó như một gói. Tệp này có thể để trống nhưng chúng tôi thường đặt mã khởi tạo cho gói đó trong tệp này.

Đây là một ví dụ. Giả sử chúng ta đang phát triển một trò chơi. Một tổ chức có thể có của các gói và mô-đun có thể được thể hiện trong hình bên dưới.

Cấu trúc mô-đun gói trong lập trình Python

Nhập mô-đun từ một gói

Chúng ta có thể nhập các mô-đun từ các gói bằng toán tử dấu chấm (.).

Ví dụ, nếu chúng ta muốn nhập startmô-đun trong ví dụ trên, nó có thể được thực hiện như sau:

 import Game.Level.start

Bây giờ, nếu mô-đun này chứa một hàm được đặt tên select_difficulty(), chúng ta phải sử dụng tên đầy đủ để tham chiếu đến nó.

 Game.Level.start.select_difficulty(2)

Nếu cấu trúc này có vẻ dài dòng, chúng ta có thể nhập mô-đun mà không có tiền tố gói như sau:

 from Game.Level import start

Bây giờ chúng ta có thể gọi hàm đơn giản như sau:

 start.select_difficulty(2)

Một cách khác để chỉ nhập hàm được yêu cầu (hoặc lớp hoặc biến) từ một mô-đun trong một gói sẽ như sau:

 from Game.Level.start import select_difficulty

Bây giờ chúng ta có thể gọi trực tiếp hàm này.

 select_difficulty(2)

Mặc dù dễ dàng hơn nhưng phương pháp này không được khuyến khích. Việc sử dụng không gian tên đầy đủ sẽ tránh nhầm lẫn và ngăn hai tên định danh giống nhau va chạm.

Trong khi nhập các gói, Python sẽ tìm trong danh sách các thư mục được xác định sys.path, tương tự như đối với đường dẫn tìm kiếm mô-đun.

thú vị bài viết...