Trong bài viết của chúng tôi về Mô-đun Python so với Gói, chúng tôi đã thảo luận về chúng là gì và xem cách tạo mô-đun của riêng chúng tôi. Chúng tôi cũng đã thấy vị trí của chúng trong hệ thống tệp của chúng tôi. Nhưng xuyên suốt bài viết, chúng ta thấy rất nhiều điểm tương đồng với module. Do đó, chúng tôi dành bài viết này cho Sự khác biệt giữa các Mô-đun và Gói Python
Mô-đun Python so với Gói
2. Mô-đun Python là gì?
Một mô-đun là một tệp Python chứa các câu lệnh và định nghĩa Python. Ví dụ, một tập tin evenodd. py là một mô-đun và chúng tôi gọi nó là 'evenodd'. Chúng tôi đặt mã tương tự với nhau trong một mô-đun. Điều này giúp chúng tôi mô đun hóa mã của mình và giúp xử lý dễ dàng hơn nhiều. Và không chỉ vậy, một mô-đun cấp cho chúng tôi khả năng tái sử dụng. Với một mô-đun, chúng tôi không cần phải viết lại cùng một mã cho một dự án mới mà chúng tôi đảm nhận
Trong bài viết trước của chúng tôi, chúng tôi đã tạo một mô-đun chẵn lẻ trong gói hai. Đây là những gì thậm chí. py giữ
def check[]: a=int[input['Enter a number']] if a%2==0: print["Even"] else: print["Odd"]
a. Làm cách nào để nhập mô-đun Python?
Vì vậy, như bạn có thể thấy, một mô-đun chỉ chứa mã Python. Do đó, chúng ta có thể nhập nó, giống như một gói
>>> import one.two.evenodd >>>
Để gọi hàm check[] ta làm như sau
>>> from one.two.evenodd import check >>> check[]
Nhập một số7
Lẻ
>>>
Một ví dụ khác là hằng số 'pi' và 'e' từ mô-đun 'math'
>>> import math >>> from math import pi >>> math.pi
3. 141592653589793
>>> math.e
2. 718281828459045
Chúng tôi cũng có thể nhập bằng bí danh hoặc sử dụng từ. tuyên bố nhập khẩu, giống như chúng tôi làm với các gói. Để nhập mọi thứ từ một mô-đun, chúng tôi làm như sau.
>>> from math import * >>> e
2. 718281828459045
>>> pi
3. 141592653589793
>>>
Hãy cập nhật evenodd. py có hai chức năng- check và evenodd
def check[]: a=int[input['Enter a number']] if a%2==0: print["Even"] else: print["Odd"] def add[a,b]: return a+b
Bây giờ, nếu chúng ta muốn nhập tất cả các chức năng từ mô-đun evenodd, chúng ta chỉ cần sử dụng ký tự đại diện *
>>> import one.two.evenodd >>>0
Nhập số0
Chẵn
>>> import one.two.evenodd >>>1
7
b. Đường dẫn tìm kiếm
Khi chúng tôi nhập một mô-đun, trước tiên trình thông dịch sẽ tìm trong thư mục hiện tại. Sau đó, nó xem xét PYTHONPATH, một biến môi trường có danh sách các thư mục. Cuối cùng, nó xem xét thư mục mặc định phụ thuộc vào cài đặt
>>> import one.two.evenodd >>>2
C. \Users\lifei\AppData\Local\Programs\Python\Python36-32\Lib\idlelib
C. \Users\lifei\AppData\Local\Programs\Python\Python36-32\python36. khóa kéo
C. \Users\lifei\AppData\Local\Programs\Python\Python36-32\DLLs
C. \Users\lifei\AppData\Local\Programs\Python\Python36-32\lib
C. \Users\lifei\AppData\Local\Programs\Python\Python36-32
C. \Users\lifei\AppData\Local\Programs\Python\Python36-32\lib\site-packages
c. Tải lại Mô-đun Python
Một mô-đun chỉ được nhập một lần. Đây là vì mục đích hiệu quả. Hãy thêm mã này vào evenodd. py
>>> import one.two.evenodd >>>3
Bây giờ, hãy khởi động lại trình bao và nhập ba lần chẵn
>>> import one.two.evenodd >>>4
Đang tải
>>> import one.two.evenodd >>>5
Nhìn thấy? . Do đó, Python cung cấp cho chúng ta một chức năng cho phép chúng ta tải lại mô-đun khi chúng ta muốn. Đây là trong mô-đun 'imp'
>>> import one.two.evenodd >>>6
Đang tải evenodd
d. dir[]
Cuối cùng, dir[] sẽ cho phép chúng ta kiểm tra các thành phần của một module
>>> import one.two.evenodd >>>7
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'check' , 'num'] .
We saw this function when we talked about the Built-in Functions in Python.
3. Gói Python là gì?
Về bản chất, một gói giống như một thư mục chứa các gói con và mô-đun. Mặc dù chúng tôi có thể tạo các gói của riêng mình, nhưng chúng tôi cũng có thể sử dụng một gói từ Chỉ mục gói Python [PyPI] để sử dụng cho các dự án của mình
Để nhập một gói, chúng tôi gõ như sau
nhập khẩu trò chơi. Âm thanh. trọng tải
Chúng tôi cũng có thể nhập nó với bí danh
nhập khẩu trò chơi. Âm thanh. tải như tải trò chơi
Bạn không thể nhập một hàm bằng toán tử dấu chấm [. ] Đối với điều đó, bạn phải gõ cái này
từ trò chơi. Âm thanh. tải khối lượng nhập khẩu_up
Một gói phải có tệp __init__. py, ngay cả khi bạn để trống
Nhưng khi chúng tôi nhập một gói, chỉ các mô-đun ngay lập tức của nó được nhập, không phải các gói con. Nếu bạn cố truy cập vào chúng, nó sẽ gây ra AttributeError
Để hiểu sâu hơn về các gói, hãy kiểm tra Gói Python
4. Sự khác biệt giữa các mô-đun và gói Python
Vì vậy, bây giờ chúng tôi đã sửa đổi cả mô-đun và gói, hãy xem chúng khác nhau như thế nào
- Một mô-đun là một tệp chứa mã Python. Tuy nhiên, một gói giống như một thư mục chứa các gói con và mô-đun
- Một gói phải chứa tệp __init__. py. Điều này không áp dụng cho các mô-đun
- Để nhập mọi thứ từ một mô-đun, chúng tôi sử dụng ký tự đại diện *. Nhưng điều này không hoạt động với các gói
Đây là tất cả về bài viết trên Mô-đun Python so với Gói
5. Phần kết luận
Bây giờ chúng ta đã biết sự khác biệt tinh tế tồn tại giữa mô-đun và gói, hãy thử thách và thực hiện một dự án của riêng chúng ta. Hãy làm điều này để kiểm tra kỹ năng gói của chúng tôi?