Gói là cấu trúc thư mục tệp phân cấp xác định một môi trường ứng dụng Python duy nhất bao gồm các mô-đun và gói con và gói con phụ, v.v.
Xem xét một tệp Pos. py có sẵn trong danh bạ Điện thoại. Tệp này có dòng mã nguồn sau -
#!/usr/bin/python def Pots[]: print "I'm Pots Phone"
Tương tự như vậy, chúng ta có hai tệp khác có các chức năng khác nhau có cùng tên như trên -
- Điện thoại/Isdn. tệp py có chức năng Isdn[]
- Điện thoại/G3. tệp py có chức năng G3[]
Bây giờ, hãy tạo thêm một tệp __init__. py trong thư mục Điện thoại -
Để cung cấp tất cả các chức năng của bạn khi bạn đã nhập Điện thoại, bạn cần đặt câu lệnh nhập rõ ràng vào __init__. py như sau -
from Pots import Pots from Isdn import Isdn from G3 import G3
Sau khi bạn thêm những dòng này vào __init__. py, bạn có sẵn tất cả các lớp này khi nhập gói Điện thoại
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]
Khi đoạn mã trên được thực thi, nó tạo ra kết quả sau -
I'm Pots Phone I'm 3G Phone I'm ISDN Phone
Trong ví dụ trên, chúng tôi đã lấy ví dụ về một chức năng duy nhất trong mỗi tệp, nhưng bạn có thể giữ nhiều chức năng trong tệp của mình. Bạn cũng có thể định nghĩa các lớp Python khác nhau trong các tệp đó và sau đó bạn có thể tạo các gói của mình từ các lớp đó
Thông thường, nhiều lập trình viên và lập trình viên nghiệp dư có thể nhầm lẫn giữa mô-đun và gói. Vấn đề thường phát sinh khi khó xác định khi nào và ở đâu một mô-đun hoặc gói nên được triển khai
Trong phần hướng dẫn sau, chúng ta sẽ thảo luận về sự khác biệt rõ ràng giữa các mô-đun và gói trong ngôn ngữ lập trình Python, điều này sẽ giúp lập trình viên dễ dàng làm việc chuyên nghiệp hơn khi xử lý cả mô-đun và gói
Hiểu các Mô-đun trong Python
Một mô-đun là một câu lệnh Pythonic chứa các chức năng khác nhau. Các mô-đun hoạt động như một thư viện được xác định trước trong tập lệnh, cả người lập trình cũng như người dùng đều có thể truy cập được
Các mô-đun python cũng lưu trữ các chức năng được xác định trước từ thư viện khi mã đang được thực thi
Chúng ta hãy xem xét một ví dụ minh họa việc sử dụng một mô-đun trong Python
Thí dụ
đầu ra
Giải trình
Trong đoạn mã trên, chúng ta đã nhập mô-đun được yêu cầu và sử dụng hàm pow[] để tính lũy thừa của một số đã cho làm đối số. Sau đó, chúng tôi đã in giá trị của pow cho người dùng
Hiểu các gói trong Python
Một gói được coi là một tập hợp các công cụ cho phép các lập trình viên khởi tạo mã. Gói Python hoạt động như một giao diện biến người dùng cho bất kỳ mã nguồn nào. Tính năng này cho phép gói Python hoạt động tại một thời điểm xác định cho bất kỳ tập lệnh chức năng nào trong thời gian chạy
Chúng ta hãy xem xét ví dụ sau minh họa gói trong Python
Thí dụ
đầu ra
We have imported the math package
Giải trình
Trong đoạn mã trên, chúng tôi đã nhập gói toán bao gồm các mô-đun và chức năng khác nhau cho các lập trình viên và in một câu lệnh cho người dùng
Hiểu sự khác biệt giữa các Mô-đun và Gói Python
- Một Gói bao gồm __init__. py cho mỗi tập lệnh hướng đến người dùng. Tuy nhiên, điều tương tự không áp dụng cho các mô-đun trong thời gian chạy đối với bất kỳ tập lệnh nào được chỉ định cho người dùng
- Mô-đun là một tệp chứa tập lệnh Python trong thời gian chạy cho mã được chỉ định cho người dùng. Một gói cũng sửa đổi mã được giải thích của người dùng theo cách sao cho nó dễ dàng được vận hành trong thời gian chạy
Một "mô-đun" python chứa một không gian tên đơn vị, với các biến được trích xuất cục bộ cùng với một số hàm được phân tích cú pháp như
- Hằng và biến
- Bất kỳ giá trị cũ hay mới
- Định nghĩa lớp của các thuộc tính
- Một mô-đun thường tương ứng với một tệp duy nhất
- Một công cụ sửa lỗi trong thư viện giao diện người dùng
Có một số công cụ thường được sử dụng cho phép các lập trình viên xây dựng một nền tảng mới với sự trợ giúp của các mô-đun để thực thi mã tốt hơn. Điều này cũng cài đặt và phân phối các gói trong thư viện trong thời gian chạy
Việc sử dụng các công cụ dành riêng cho người dùng trở nên dễ dàng hơn với sự trợ giúp của bố cục tiêu chuẩn và có cấu trúc tốt cho gói
Chúng tôi tổ chức một số lượng lớn tệp 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 tôi có thể tìm và quản lý chúng dễ dàng. Theo cách tương tự, một gói trong Python đưa khái niệm về cách tiếp cận mô-đun lên cấp độ logic tiếp theo. Như bạn đã biết, một mô-đun có thể chứa nhiều đối tượng, chẳng hạn như lớp, hàm, v.v. Một gói có thể chứa một hoặc nhiều mô-đun có liên quan. Về mặt vật lý, một gói thực sự là một thư mục chứa một hoặc nhiều tệp mô-đun
Hãy tạo một gói có tên mypackage, sử dụng các bước sau
- Tạo một thư mục mới có tên
from Pots import Pots from Isdn import Isdn from G3 import G3
9 - Bên trong
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]
0, tạo thư mục con có tên 'mypackage' - Tạo một tệp
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]
1 trống trong thư mục mypackage - Sử dụng trình chỉnh sửa nhận biết Python như IDLE, tạo mô-đun chào. py và chức năng. py với đoạn mã sau
chào hỏi. py
Sao chépdef SayHello[name]:
print["Hello ", name]
chức năng. py
def sum[x,y]:
return x+y
def average[x,y]:
return [x+y]/2
def power[x,y]:
return x**y
Đó là nó. Chúng tôi đã tạo gói có tên mypackage. Sau đây là cấu trúc thư mục
Nhập Mô-đun từ Gói
Bây giờ, để kiểm tra gói của chúng tôi, hãy điều hướng dấu nhắc lệnh đến thư mục
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]0 và gọi dấu nhắc Python từ đóD. \MyApp>trăn
Nhập mô-đun chức năng từ gói mypackage và gọi hàm power[] của nó
>>> từ chức năng nhập mypackage>>> chức năng. sức mạnh[3,2]
9
Cũng có thể nhập các chức năng cụ thể từ một mô-đun trong gói
>>> từ gói của tôi. hàm nhập sum>>> sum[10,20]
30
>>> trung bình[10,12]< .
Traceback [most recent call last]:
Tệp "
NameError. tên 'trung bình' không được xác định
__trong đó__. py
Thư mục gói chứa một tệp đặc biệt có tên là
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]1, lưu trữ nội dung của gói. Nó phục vụ hai mục đích
- Trình thông dịch Python nhận ra một thư mục là gói nếu nó chứa tệp
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]
1 #!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]
1 hiển thị các tài nguyên được chỉ định từ các mô-đun của nó sẽ được nhập
Một tệp
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]1 trống sẽ cung cấp tất cả các chức năng từ các mô-đun trên khi gói này được nhập. Lưu ý rằng
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]1 là điều cần thiết để thư mục được Python nhận dạng dưới dạng gói. Bạn có thể tùy chọn xác định các chức năng từ các mô-đun riêng lẻ sẽ được cung cấp
Ghi chú
Chúng tôi cũng sẽ tạo một tập lệnh Python khác trong thư mục
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]0 và nhập gói mypackage trong đó. Nó phải ở cùng cấp độ của gói được nhập
Tệp
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]1 thường được để trống. Tuy nhiên, nó cũng có thể được sử dụng để chọn các chức năng cụ thể từ các mô-đun trong thư mục gói và cung cấp chúng để nhập. Sửa đổi
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]1 như bên dưới
__trong đó__. py
Sao chépfrom .functions import average, power
from .greet import SayHello
Giờ đây, các chức năng được chỉ định có thể được nhập trong phiên thông dịch hoặc tập lệnh thực thi khác
Tạo
def sum[x,y]:
return x+y
def average[x,y]:
return [x+y]/2
def power[x,y]:
return x**y
7 trong thư mục #!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]0 để kiểm tra mypackage
kiểm tra. py
Sao chépfrom mypackage import power, average, SayHello
SayHello[]
x=power[3,2]
print["power[3,2] : ", x]
Lưu ý rằng các hàm
def sum[x,y]:
return x+y
def average[x,y]:
return [x+y]/2
def power[x,y]:
return x**y
9 và from .functions import average, power
from .greet import SayHello
0 được nhập từ gói chứ không phải từ các mô-đun tương ứng của chúng, như đã thực hiện trước đó. Đầu ra của đoạn script trên làD. \MyApp>kiểm tra trăn. pyXin chào thế giới
power[3,2]. 9
Cài đặt gói trên toàn cầu
Khi một gói được tạo, nó có thể được cài đặt để sử dụng trên toàn hệ thống bằng cách chạy tập lệnh thiết lập. Tập lệnh gọi hàm
from .functions import average, power
from .greet import SayHello
1 từ mô-đun from .functions import average, power
from .greet import SayHello
2Hãy cài đặt mypackage để sử dụng trên toàn hệ thống bằng cách chạy tập lệnh thiết lập
Lưu đoạn mã sau dưới dạng thiết lập. py trong thư mục mẹ
#!/usr/bin/python # Now import your Phone Package. import Phone Phone.Pots[] Phone.Isdn[] Phone.G3[]0. Tập lệnh gọi hàm
from .functions import average, power
from .greet import SayHello
1 từ mô-đun setuptools. Hàm from .functions import average, power
from .greet import SayHello
1 nhận nhiều đối số khác nhau như tên, phiên bản, tác giả, danh sách phụ thuộc, v.v. Đối số from .functions import average, power
from .greet import SayHello
6 xác định xem gói được cài đặt ở chế độ nén hay chế độ thông thườngThí dụ. thành lập. py
Sao chépfrom Pots import Pots from Isdn import Isdn from G3 import G37
Bây giờ hãy thực hiện lệnh sau để cài đặt
from .functions import average, power
from .greet import SayHello
7 bằng tiện ích pip. Đảm bảo rằng dấu nhắc lệnh nằm trong thư mục mẹ, trong trường hợp này là from Pots import Pots from Isdn import Isdn from G3 import G39D. \MyApp>pip install mypackage
Đang xử lý d. \MyApp
Cài đặt các gói đã thu thập. mypack
Chạy thiết lập. py cài đặt cho mypack. xong
Đã cài đặt thành công mypackage-0. 1
Bây giờ mypackage có sẵn để sử dụng trên toàn hệ thống và có thể được nhập vào bất kỳ tập lệnh hoặc trình thông dịch nào
D. \>python>>> nhập mypackage
>>>mypackage. trung bình[10,20]
15. 0
>>>gói của tôi. công suất[10,2]
100
Bạn cũng có thể muốn xuất bản gói để sử dụng công khai. PyPI [viết tắt của Python Package Index] là kho lưu trữ các gói Python. Truy cập https. // bao bì. con trăn. org/distributing để biết thêm về quy trình tải gói lên PyPI