INTRODUCTION
FLOW CONTROL
FUNCTIONS
DATATYPES
OBJECT & CLASS
Bài tập Python: Lập trình hướng đối tượng (OOP) trong Python Lập trình hướng đối tượng trong Python Class Variables trong Python Tìm hiểu về Methods trong Python Cách sử dụng phương thức __init__() trong Python Các biến Instance trong Python Tìm hiểu về Class Attributes trong Python Hàm Static Methods trong Python Phương thức __str__ trong Python Phương thức __repr__ trong Python Phương thức eq trong Python Tìm hiểu phương thức __hash__ trong Python Phương thức __bool__ trong Python Phương thức del trong Python Tìm hiểu về lớp Property trong Python Tìm hiểu về nạp chồng toán tử trong Python Trình Decorator Property trong Python Thuộc tính chỉ đọc trong Python Thuộc tính Delete trong Python Sử dụng super() trong Python Sử dụng __slots__ trong Python Cách sử dụng Protocol trong Python Sử dụng Enum aliases và @enum.unique trong Python Tùy chỉnh và mở rộng lớp Enum trong Python Cách sử dụng hàm Auto() của Python Single Responsibility Principle trong Python Nguyên tắc Đóng-Mở trong Python Nguyên tắc thay thế Liskov - LSP trong Python Interface Segregation Principle - ISP trong Python. Nguyên tắc đảo ngược sự phụ thuộc trong Python Đa kế thừa trong Python Tìm hiểu về các lớp mixin trong Python Mô tả Descriptors trong Python Phân biệt Data Descriptor và Non-data Descriptor trong Python Phương thức __new__ trong Python Tìm hiểu về Class Type trong Python Lớp Metaclass trong Python Ví dụ sử dụng metaclass trong Python Tìm hiểu về decorator dataclass trong Python Tìm hiểu về các ngoại lệ trong Python Ngoại lệ Raise trong Python Sử dụng câu lệnh raise from trong Python Ngoại lệ tùy chỉnh trong Python Module trong Python Package trong Python Class trong Python Hàm khởi tạo trong Python Kế thừa trong Python Đa kế thừa trong Python Setter và Getter trong Python Override trong Python Interface trong Python Bài tập Python: Module và Class
ADVANCED TOPICS
BỔ SUNG
PYTHON CĂN BẢN
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

Package trong Python: Có gì khác với module

Trong bài này chúng ta sẽ tìm hiểu package trong Python, đây là phương pháp quản lý các module theo package, giúp việc xây dựng cấu trúc của ứng dụng Python trở nên đơn giản hơn rất nhiều.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài module mình đã hướng dẫn bạn cách tạo một module đơn giản trong Python, và nó nằm cùng cấp thư mục với file chính của chương trình. Giả sử trường hợp bạn tạo ra 100 modules thì phải tạo ra 100 files, như vậy việc quản lý các modules sẽ rất phức tạp.

Để đơn giản hóa thì trong Python xuất hiện thêm khái niệm package. Chi tiết thế nào thì chúng ta cùng tìm hiểu ngay nhé.

1. Package trong Python là gì?

Package là cách tạo ra các gói và mỗi gói sẽ chứa những module liên quan với nhau. Phương pháp này giúp việc phân chia modules trong Python một cách dễ dàng.

Bài viết này được đăng tại [free tuts .net]

Bạn có thể hiểu một package giống như folder trong máy tính vậy. Bên trong folder này có thể chứa thêm một folder khác (tức là package khác), và cũng có thể chứa thêm những file khác (tức là các modules).

Hình ảnh dưới đây là cấu trúc của package Game.

cau truc package python jpg

Như bạn thấy:

  • Bên trong Game có thêm 3 package con là Sound, Image, Level
  • Bên trong 3 package con này chứa các module có liên quan với nhau.

Điều đặc biệt là mỗi package bắt buộc phải có file __init__.py, đây là file được gọi đầu tiên mỗi khi bạn import package nó vào chương trình. Nếu bạn đã học lập trình hướng đối tượng thì file này giống như hàm khởi tạo của một lớp vậy đó.

2. Thực hành tạo một package trong Python

Giả sử mình cần tạo package có tên là Store.

package store JPG

Như bạn thấy trong hình, mình đã tạo một folder Store và một file __init__.py, bây giờ mình sẽ viết code trong file này như sau:

Store/__init__.py
print("Bạn đã load package Store")

Để gọi đến package này trong file helloworld.py thì ta sử dụng lệnh sau

import Store

Chạy lên bạn sẽ nhận được kết quả như sau:

package ket qua 1 JPG

Như vậy đoạn code trong file __init__.py đã tự động được gọi.

3. Tạo module trong Package Python

Để tạo một module nằm trong một package A thì bạn chỉ việc tạo file module_name.py nằm trong thư mục package A là được.

Giả sử mình cần tạo module computer.py nằm trong package Store thì cấu trúc sẽ như sau:

package store 2 JPG

Tạo một hàm trong package computer như sau:

def showComputerMsg(msg):
    print(msg)

Bây giờ để sử dụng package computer trong file helloworld.py thì ta sử dụng lệnh import như sau:

import Store.computer
Store.computer.showComputerMsg('Máy tính của Freetuts.net')

Hoặc sử dụng lệnh from ... import như sau:

from Store import computer
computer.showComputerMsg('Máy tính của Freetuts.net')

4. Tạo package bên trong một package khác

Package trong Python có thể tạo chồng lên nhau. Ví dụ trong package A bạn muốn chia thành 2 package nhỏ là B và C thì hoàn toàn được, bằng cách sử dụng cấu trúc sub folder như phần 1.

Điều lưu ý duy nhất là mỗi package bắt buộc phải có file __init__.py nhé.

packageA
    __init__.py
    packageB
        __init__.py
    packageC
        __init__.py

Và để truy xuất đến các package này thì chỉ việc sử dụng dấu chấm để nối giữa các package là được.

Ví dụ: Giả sử mình có cấu trúc package như sau trong một ứng dụng Python.

Store
    __init__.py
    Computer
        __init__.py
        Ram
            __init__.py
            raminfor.py

Lúc này để gọi đến module raminfor thì ta sử dụng cú pháp sau:

import Store.Computer.Ram.raminfor

Các cách gọi khác thì tương tự như phần 3 nhé.

Như vậy là qua bài này bạn đã biết cách sử dụng package trong Python rồi nhỉ. Mình hy vọng bạn hiểu được các vấn đề sau:

  • Cách tạo và gọi đến các package
  • Hiểu ý nghĩa của file __init__.py trong Python
  • Và nhiều kiến thức liên quan khác.

Cùng chuyên mục:

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn toàn diện về module datetime trong Python

Hướng dẫn toàn diện về module datetime trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Từ khóa yield trong Python

Từ khóa yield trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Định dạng chuỗi Strings trong Python

Định dạng chuỗi Strings trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Làm việc với các biến môi trường trong Python

Làm việc với các biến môi trường trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa iterator và iterable trong Python

Sự khác biệt giữa iterator và iterable trong Python

Cách làm việc với file tarball/tar trong Python

Cách làm việc với file tarball/tar trong Python

Chuyển đổi kiểu dữ liệu trong Python

Chuyển đổi kiểu dữ liệu trong Python

Sự khác biệt giữa toán tử == và is trong Python

Sự khác biệt giữa toán tử == và is trong Python

Làm việc với file ZIP trong Python

Làm việc với file ZIP trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Sự khác biệt giữa byte objects và string trong Python

Sự khác biệt giữa byte objects và string trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format  trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Top