Module và Package

Ngoài việc cho phép định nghĩa, xây dựng các hàm (function), python còn cho phép xây dựng module và package nhằm nâng cao việc quản lý, phân chia công việc và tái sử dụng code. Người viết code không cần phải nhồi nhét tất cả vào trong một file duy nhất mà có thể chia ra thành nhiều file đặt trong nhiều thư mục khác nhau.

  1. Module:
    Mỗi module là 1 file có đuôi .py chứa các hàm, biến toàn cục, class được thiết lập sẵn. Việc sử dụng module cũng không ngoài mục đích phân chia công việc, dễ quản lý và tăng hiệu quả tái sử dụng code.
    Ví dụ: tạo file có tên main.py và first_module.py trong cùng thư mục. Trong file first_module.py nhập đoạn code sau:
def tinh_dien_tich(x,y):
    S = x*y
    print("kết quả: ", S)

Trong file main.py khai báo module và sử dụng hàm tinh_dien_tich() như sau:

import first_module
first_module.tinh_dien_tich(5,10)

Dòng đầu tiên là cho biết sẽ sử dụng module “first_module”

Dòng thứ 2 là gọi hàm “tinh_dien_tich()” từ trong “first_module” với 2 thông số đầu vào là 5 và 10.

Kết quả sẽ cho ra:

Thông thường nếu tên module dài, gây bất tiện khi mỗi lần gọi hàm trong module, chúng ta sử dụng cú pháp import <tên module> as <tên gợi nhớ>. Cũng ví dụ trên, chúng ta sửa lại file main.py như sau:

import first_module as fm
fm.tinh_dien_tich(5,10)

Khi bấm chạy vẫn ra kết quả như trước. Lúc này first_module được đặt tên dễ nhớ hơn là fm.

Ví dụ 2: trong trường hợp không muốn import toàn bộ module mà chỉ import 1 hàm hoặc 1 biến trong module. Chúng ta dùng cú pháp

from <tên module> import <tên hàm 1, tên hàm 2,..., tên biến 1, tên biến 2,...>

Ví dụ:

from first_module import tinh_dien_tich as tdt
tdt(5,10)

Lần này do hàm được import trực tiếp nên có thể gọi thực thi luôn mà không cần phải gọi tên module như ví dụ trước.

2. Packages

Theo ví dụ trên, để sử dụng một module nào đó, chúng ta phải khai báo bằng lệnh import. Tuy nhiên làm cách này sẽ rất bất tiện nếu số lượng modules nhiều. Khi đó chúng ta nên đóng gói nhiều module vào trong 1 package. Khi đó chỉ cần import package 1 lần cho tất cả các modules. Thông thường nếu một package có chứa nhiều packages con thì package đó được gọi là library.

Ví dụ: tạo 1 package có cấu trúc như cây thư mục sau

quan_ly_nhan_su là thư mục gốc, tên thư mục là tên package. Bên trong thư mục này có chứa

  • file __init__.py: đây là file bắt buộc phải có để python biết thư mục chứa nó là package. Nội dung file __init__.py có thể rỗng hoặc là các lệnh để thực thi ban đầu khi import.
  • các module (ví dụ ở đây là baocao.py): có thể có 1 hoặc nhiều modules
  • các sub-package (ví dụ ở đây là data và team): trong mỗi sub-package cũng phải có file __init__.py.

Ví dụ 1: chỉ muốn import 1 module nào đó (chẳng hạn như module engineering.py) trong package

import quan_ly_nhan_su.team.engineering
hoặc
from quan_ly_nhan_su.team import engineering
#chú ý cách 2 là import trực tiếp nên khi sử dụng module không cần gọi package

Ví dụ 2: import toàn bộ package

Trong trường hợp này, phải khai báo biến __all__ là tên các sub-package, module cần import 1 lượt.

Design a site like this with WordPress.com
Get started