Sử dụng module và package trong Python

1. Module trong Python

1.1. Module trong Python là gì?

Module trong Python là một file chứa những câu lệnh (statement) và định nghĩa (definition). Ví dụ, một file example.py là một module với tên module là example.

Trong một module, chúng ta có thể định nghĩa hàm (function), lớp (class), biến (variable). Chúng ta sử dụng các module để chia một chương trình lớn thành các file nhỏ. Việc này giúp dễ quản lý chương trình và tổ chức cấu trúc chương trình logic hơn. Hơn nữa, các module cung cấp khả năng tái sử dụng code của chương trình.

Ví dụ, chúng ta có một module example.py như bên dưới.

def add(x, y):
    """This program adds two numbers and return the result"""
    result = x + y
    return result
 
def subtract(x, y):
    """This program subtracts two
    numbers and return the result"""
    result = x - y
    return result

Module example.py gồm định nghĩa 2 hàm là add()subtract().

1.2. Import module trong Python

Chúng ta có thể sử dụng các function, class, variable của một module trong một module khác. Để làm điều này, chúng ta cần import một module vào một module khác. Sau đó, chúng ta sử dụng toán tử chấm (.) để sử dụng các thành phần trong module được import. Ví dụ, chúng ta import module example vào module main (file main.py).

import example

a = 1
b = 2
print("a + b = ", example.add(a, b))
print("a - b = ", example.subtract(a, b))
Kết quả
a + b =  3
a - b =  -1

Lưu ý: Module được import phải tồn tại và nằm trong các thư mục mà trình biên dịch Python tìm kiếm các module như Lib folder trong folder cài đặt Python, folder chứa chương trình Python đang lập trình,…

Ví dụ khác về import các module

import math

a = 16
b = 3.14
print(math.sqrt(a))
print(math.sin(b))
print(math.pi)
Kết quả
4.0
0.0015926529164868282
3.141592653589793

1.3. Import và đổi tên module

Chúng ta có thể import và đổi tên module.

import math as m
print("The value of pi is", m.pi)
Kết quả
The value of pi is 3.141592653589793

Chúng ta chỉ thường đổi tên module khi tên module quá dài. Việc đổi tên module này chỉ có phạm vi sử dụng trong module có câu lệnh import đó.

1.4. Câu lệnh from…import trong Python

Chúng ta có thể import các thành phần cụ thể từ một module mà không cần import toàn bộ module. Ví dụ:

from math import pi, e
print("The value of pi is", pi)
print("The value of e is", e)
Kết quả
The value of pi is 3.141592653589793
The value of e is 2.718281828459045

Trong ví dụ trên, khi sử dụng pi, e thì không cần sử dụng toán tử chấm (.). Và chỉ có pi, e trong module math được sử dụng.

1.5. Import tất cả thành phần trong module

Chúng ta có thể import tất cả các thành phần trong module với dấu hoa thị (*).

from math import *
print("The value of pi is", pi)
print("The value of e is", e)
Kết quả
The value of pi is 3.141592653589793
The value of e is 2.718281828459045

Tất cả các thành phần trong module math có thể được sử dụng mà không cần dùng toán tử chấm (.).

1.6. Các folder mà Python sẽ tìm các module để import

Khi import một module, Python sẽ tìm module đó trong một số thư mục theo thứ tự:

    • Thư mục hiện tại.
    • PYTHONPATH (biến môi trường với danh sách các thư mục).
    • Thư mục mặc định phụ thuộc vào cấu hình.

Chương trình in ra các thư mục của biến môi trường

import sys
 
# importing sys.path
print(sys.path)
Kết quả
['c:\\python-examples', 'C:\\Python\\Python310\\python310.zip', 'C:\\Python\\Python310\\DLLs', 'C:\\Python\\Python310\\lib', 'C:\\Python\\Python310', 'C:\\Python\\Python310\\lib\\site-packages']

1.7. Danh sách các thành phần trong module

import example
print(dir(example))
Kết quả
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'add', 'subtract']

2. Package trong Python

Package trong Python bao gồm một hoặc nhiều module. Package giống như một thư mục (directory). Một package có thể chứa các package khác.

Một directory muốn được Python xem là một package khi directory đó chứa một file tên là __init__.py. File này có thể rỗng nhưng file này thường chứa những code khởi tạo (initialization code) cho package.

Khi chương trình Python lớn với rất nhiều module, chúng ta đặt các module có chung đặc điểm nào đó trong một package. Từ đó, chúng ta có thể có nhiều package khác nhau. Điều này làm cho một chương trình lớn dễ quản lý và rõ ràng hơn về cấu trúc cũng như logic chương trình.

Sơ đồ ví dụ một package trong Python

Ví dụ về package trong Python

Import module từ một package

Chúng ta có thể import các module từ các package bằng cách sử dụng toán tử chấm (.). Ví dụ, chúng ta muốn import module outfit như trong sơ đồ trên thì sẽ viết như sau:

import Robot.Design.outfit

Chúng ta cũng có thể import module outfit với câu lệnh from…import như sau:

from Robot.Design import outfit

Từ đây, chúng ta có thể sử dụng các module theo các kiến thức về module trong Python ở phần 1.

5/5 - (1 bình chọn)
Bài trước và bài sau trong môn học<< Cách sử dụng decorator trong PythonSử dụng kiểu dữ liệu String trong Python >>
Chia sẻ trên mạng xã hội:

2 bình luận về bài viết “Sử dụng module và package trong Python

  1. Mình mới học python có chỗ không biết, admin cho mình hỏi một tí được không ạ.
    Ví dụ mình có 1 package như trên.
    – Ở module face.py
    import Actions.wailk
    import Sound.alarm
    import Design.outfit
    – Nhưng mình nhận được Exception has occurred: ModuleNotFoundError No module named ‘xxx’
    Với xxx là có thể 1 trong các folder của module
    -Mình đã thử nhiều cách như
    add sys.path.append(path_module), thêm path python,.. nhưng đều không hiệu quả.
    – Huy vọng admin có thể help mình. thanks

    1. Chào bạn,
      Khi bạn đang ở module face.py trong package con Design, nếu bạn chạy đoạn code sau:
      import sys
      print(sys.path)

      thì bạn sẽ thấy các package Actions và Sound (các package con nằm trong package cha là Robot) không nằm trong danh sách thư mục mà Python tìm kiếm các module để import nên sẽ gây ra lỗi.
      Ở module face.py, bạn có thể sửa lỗi bằng cách thêm thư mục của package cha là Robot vào danh sách thư mục mà Python tìm kiếm các module với đoạn code sau:
      import sys
      from pathlib import Path
      # add project root to path
      sys.path.append(str(Path(__file__).resolve().parent.parent))
      print(sys.path)
      import Actions.walk
      import Sound.alarm
      import Design.outfit
      print("hello, error fixed!")

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.