Gói Python
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, hiệu quả bằ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 bên thứ ba hoặc của riêng bạn trong chương trình Python.
Video: Gói Python: Tổ chức mã của bạn
Gói là gì?
Chúng tôi thường không lưu trữ tất cả các tệp của chúng tôi trên máy tính của chúng tôi ở cùng một vị trí. Chúng tôi sử dụng một hệ thống phân cấp các 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 lưu 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 "Âm nhạc". Tương tự như điều này, Python có các gói cho các thư mục và mô -đun cho các tệp.music" directory. Analogous to this, Python has packages for directories and modules for files.
Khi chương trình ứng dụng của chúng tôi phát triển 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ễ dàng 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, gói Python có thể có các gói và mô-đun phụ.
Một thư mục phải chứa một tệp có tên
Game.Level.start.select_difficulty[2]
0 để Python coi nó là một gói. Tệp này có thể bị bỏ 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ủa các gói và mô -đun có thể được thể hiện trong hình dưới đây.
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ử DOT [.].
Ví dụ: nếu chúng tôi muốn nhập mô -đun
Game.Level.start.select_difficulty[2]
1 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ên
Game.Level.start.select_difficulty[2]
2, chúng ta phải sử dụng tên đầy đủ để tham khảo nó.Game.Level.start.select_difficulty[2]
Nếu cấu trúc này có vẻ dài, 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 chức năng đơn giản như sau:
start.select_difficulty[2]
Một cách khác để nhập chỉ hàm [hoặc lớp hoặc biến] bắt buộc từ một mô -đun trong 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 chức năng này.
select_difficulty[2]
Mặc dù dễ dàng hơn, phương pháp này không được khuyến khích. Sử dụng toàn bộ không gian tên tránh sự nhầm lẫn và ngăn hai tên nhận dạng giống nhau va chạm.
Trong khi nhập các gói, Python nhìn vào danh sách các thư mục được xác định trong
Game.Level.start.select_difficulty[2]
3, tương tự như đối với đường dẫn tìm kiếm mô -đun. Chúng tôi thường tổ chức các tệp của mình trong các thư mục và thư mục con khác nhau dựa trên một số tiêu chí, để chúng có thể được quản lý dễ dàng và hiệu quả. Ví dụ: chúng tôi giữ tất cả các trò chơi của mình trong một thư mục trò chơi và chúng tôi thậm chí có thể phân loại theo thể loại của trò chơi hoặc một cái gì đó như thế này. Tương tự tương tự được theo sau là gói Python. & NBSP;
Một mô -đun Python có thể chứa một số lớp, hàm, biến, v.v. trong khi gói Python có thể chứa một số mô -đun. Nói một cách đơn giản hơn, gói là thư mục chứa các mô -đun khác nhau dưới dạng tệp.
Tạo gói
Hãy để tạo ra một gói có tên MyPCKG sẽ chứa hai mô -đun Mod1 và Mod2. Để tạo mô -đun này, hãy làm theo các bước dưới đây - & NBSP;
- Tạo một thư mục có tên MyPCKG.
- Bên trong thư mục này tạo một tệp python trống, tức là __init__.py
- Sau đó tạo hai mô -đun Mod1 và Mod2 trong thư mục này.
Mod1.py
Python3
Game.Level.start.select_difficulty[2]
4 Game.Level.start.select_difficulty[2]
5Game.Level.start.select_difficulty[2]
6Game.Level.start.select_difficulty[2]
7Game.Level.start.select_difficulty[2]
8Game.Level.start.select_difficulty[2]
9from Game.Level import start
0Mod2.py
Python3
Game.Level.start.select_difficulty[2]
4 from Game.Level import start
22Game.Level.start.select_difficulty[2]
6from Game.Level import start
5 from Game.Level import start
6from Game.Level import start
7from Game.Level import start
8Phân cấp của gói của chúng tôi trông như thế này - & nbsp;
mypckg | | ---__init__.py | | ---mod1.py | | ---mod2.py
Hiểu __init__.py
__init__.py giúp trình thông dịch Python nhận ra thư mục là gói. Nó cũng chỉ định các tài nguyên được nhập từ các mô -đun. Nếu __init__.py trống, điều này có nghĩa là tất cả các chức năng của các mô -đun sẽ được nhập. Chúng tôi cũng có thể chỉ định các chức năng từ mỗi mô -đun sẽ có sẵn.
Ví dụ: chúng ta cũng có thể tạo tệp __init__.py cho mô -đun trên là - & nbsp;
__init__.py
Python3
from Game.Level import start
9 start.select_difficulty[2]
0start.select_difficulty[2]
1 start.select_difficulty[2]
2from Game.Level import start
9 start.select_difficulty[2]
4start.select_difficulty[2]
1 from Game.Level import start
2__Init__.py này sẽ chỉ cho phép các hàm GFG và SUM từ các mô -đun Mod1 và Mod2 được nhập.
Nhập các mô -đun từ một gói
Chúng ta có thể nhập các mô -đun này bằng cách sử dụng câu lệnh từ nhập từ và toán tử DOT [.] & NBSP;
Syntax:
import package_name.module_name
Ví dụ: Nhập mô -đun từ gói
Chúng tôi sẽ nhập các mô -đun từ gói được tạo ở trên và sẽ sử dụng các chức năng bên trong các mô -đun đó.
Python3
from Game.Level import start
9 start.select_difficulty[2]
8start.select_difficulty[2]
1 from Game.Level.start import select_difficulty
0from Game.Level import start
9 start.select_difficulty[2]
8start.select_difficulty[2]
1 from Game.Level.start import select_difficulty
4from Game.Level.start import select_difficulty
5from Game.Level.start import select_difficulty
6from Game.Level.start import select_difficulty
7 from Game.Level.start import select_difficulty
8______22222Game.Level.start.select_difficulty[2]
7select_difficulty[2]
6Output:
Welcome to GFG 3
Chúng tôi cũng có thể nhập chức năng cụ thể cũng sử dụng cùng một cú pháp.
Ví dụ: Nhập chức năng cụ thể từ mô -đun
Python3
from Game.Level import start
9 select_difficulty[2]
8start.select_difficulty[2]
1 start.select_difficulty[2]
2from Game.Level import start
9 mypckg | | ---__init__.py | | ---mod1.py | | ---mod2.py2
start.select_difficulty[2]
1 from Game.Level import start
2mypckg | | ---__init__.py | | ---mod1.py | | ---mod2.py5
from Game.Level.start import select_difficulty
6from Game.Level.start import select_difficulty
7 from Game.Level import start
2Game.Level.start.select_difficulty[2]
8select_difficulty[2]
1select_difficulty[2]
22.Game.Level.start.select_difficulty[2]
7select_difficulty[2]
6Output:
Welcome to GFG 3