CodeGym /Các khóa học /Python SELF VI /Tạo package của riêng bạn

Tạo package của riêng bạn

Python SELF VI
Mức độ , Bài học
Có sẵn

2.1 Làm quen với packages

Packages là cách để cấu trúc hóa các modules trong thư mục. Package là thư mục, chứa file __init__.py và một hoặc nhiều modules. File __init__.py có thể trống hoặc chứa code khởi tạo cho package.

Ví dụ cấu trúc của package/thư mục


mypackage/
    __init__.py
    module1.py
    module2.py
Nội dung của file __init__.py

# __init__.py
from .module1 import func1
from .module2 import func2
Nội dung của file module1.py

# module1.py
def func1():
    return "Function 1"
Nội dung của file module2.py

# module2.py
def func2():
    return "Function 2"

Ví dụ mã sử dụng các hàm từ package này:


import mypackage

print(mypackage.func1())  # Xuất ra: Function 1
print(mypackage.func2())  # Xuất ra: Function 2

Cùng thử viết package của riêng mình dưới đây, và tìm hiểu cách hoạt động của package khác.

2.2 Tạo package của riêng bạn từng bước

Bước 1: Tạo cấu trúc package

Bước đầu tiên là tạo cấu trúc thư mục và file cho package của bạn. Ví dụ, chúng ta sẽ tạo một package tên là mypackage, chứa hai modules: module1.pymodule2.py.

Ví dụ cấu trúc package:


mypackage/
    __init__.py
    module1.py
    module2.py

Mô tả file:

  • __init__.py: File này có thể trống hoặc chứa mã khởi tạo package. Nó cần thiết để Python nhận diện thư mục như là một package.
  • module1.pymodule2.py: Những file này chứa các hàm, lớp và biến mà bạn muốn đưa vào package của mình.

Bước 2: Viết mã cho các modules

Viết mã đơn giản cho các modules của chúng ta.

module1.py


def func1():
    return "Function 1 from module1"

module2.py


def func2():
    return "Function 2 from module2"

__init__.py

Để nhập các hàm từ các module của chúng ta lên mức package, hãy thêm chúng vào __init__.py.


from .module1 import func1
from .module2 import func2

Bây giờ, khi bạn import package, các hàm func1func2 sẽ có sẵn trực tiếp.

Bước 3: Kiểm tra package

Tạo một file test.py trong cùng thư mục với thư mục mypackage, và sử dụng package trong file này để kiểm tra.

test.py


import mypackage

print(mypackage.func1())  # Xuất ra: Function 1 from module1
print(mypackage.func2())  # Xuất ra: Function 2 from module2

Chạy test.py để đảm bảo package của bạn hoạt động đúng.

2.3 Sử dụng hàm dir()

Khi bạn import một module hoặc package, bạn có thể sử dụng hàm dir() để lấy danh sách tất cả các thuộc tính và phương thức có sẵn trong module đó. Điều này đặc biệt hữu ích nếu bạn làm việc với một module mới hoặc không quen thuộc và muốn nhanh chóng biết các hàm và lớp mà nó cung cấp.

Ví dụ: Khám phá module chuẩn math

Hãy xem một ví dụ sử dụng dir() để khám phá module chuẩn math.


import math

print(dir(math))

Đoạn mã này import module math và xuất danh sách tất cả các thuộc tính và phương thức có sẵn. Kết quả sẽ trông giống như sau:


['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan',
'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 
'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf',
'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod',
'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Danh sách này bao gồm tất cả các hàm và hằng số, được định nghĩa trong module math, như sin, cos, tan, pi và các hàm khác.

Sử dụng dir() cho modules tùy chỉnh

Bạn cũng có thể sử dụng dir() cho modules tùy chỉnh (của bạn). Giả sử bạn có một file mymodule.py với nội dung sau:


# mymodule.py
def greet(name):
    return f"Hello, {name}!"
            
pi = 3.14159

Bạn có thể import module này và sử dụng dir() để khám phá nội dung của nó:


import mymodule

print(dir(mymodule))

Kết quả sẽ như sau:


['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 
'greet', 'pi']

Danh sách bao gồm 8 thuộc tính hệ thống (được đóng khung bằng gạch dưới) của module mymodule, và cuối cùng là phương thức greet và biến pi của bạn.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION