Đối với các lập trình viên, việc tạo, sử dụng và tổ chức các module trong lập trình là một phần không thể thiếu và với lập trình Python cũng không ngoại lệ. Vậy làm thế nào để tạo và sử dụng module một cách hiệu quả trong Python? Hãy cùng mình tìm hiểu qua bài viết này nhé.
NỘI DUNG BÀI VIẾT
Sơ lược về module trong Python
Đối với ngôn ngữ lập trình thì module là một phần quan trọng và tất yếu trong hầu hết những dự án. Nói cách khác, modules là tập hợp những file mà phần mở rộng có chứa .py. Những file này sẽ bao gồm mã Python và thông thường sẽ là những hàm, biến hay một lớp bất kỳ.
Tại sao phải dùng module trong Python? Câu trả lời là nó hỗ trợ người dùng viết code cực kỳ nhanh và thuận tiện. Lúc này, mỗi file sẽ bao gồm các đoạn code cùng nhau thực hiện một chức năng quan trọng và riêng biệt.
Tiếp đến, nó được phân loại dựa trên yêu cầu của người dùng. Ngoài ra, để bắt đầu dùng những hàm từ module A trong module B thì lập trình viên nên dùng từ khóa import
. Từ đây, mọi việc sẽ cực kỳ đơn giản và bạn hoàn toàn có thể khai thác hết tài nguyên của module A. Sau đây, chúng ta sẽ cùng nhau đến với phương pháp import.
![Hình 1. Module trong ngôn ngữ lập trình Python](/images/2023-06/module-trong-python-1.jpg)
Làm sao để tạo module trong Python?
Người dùng phải tạo một tập tin với đuôi .py nhằm phục vụ cho việc khởi tạo một module trong ngôn ngữ lập trình Python. Hãy nhớ nó phải bao gồm biến, lớp và hàm đã được định nghĩa. Cuối cùng, người dùng hãy nhập module đó vào chương trình thông qua việc dùng lệnh import
.
![Hình 2. Tạo Module trong Python](/images/2023-06/module-trong-python-2.jpg)
Hình 2. Tạo module trong Python
Sau đây để giúp các bạn hiểu rõ thêm về việc tạo module trong Python, chúng tôi xin thực hiện ví dụ. Đầu tiên, tạo một module với tên là math_utils.py để thực hiện phép tính toán học của hai số.
# math_utils.py
def add(x, y):
return x + y
def subtract(x, y):
return x - y
def multiply(x, y):
return x * y
def divide(x, y):
if y == 0:
raise ValueError("Cannot divide by zero!")
return x / y
Tiếp theo, hãy dùng module math_utils đối với chương trình khác và cùng nhập nhập nó bằng lệnh import
.
# main.py
import math_utils
result = math_utils.add(3, 5)
print(result) # output: 8
result = math_utils.divide(10, 2)
print(result) # output: 5.0
Một điều cần nhớ là người dùng phải dùng import
để nhập module và chương trình sẽ tự động tìm kiếm module này trong những thư mục của họ. Không những thế, hãy dùng những đường dẫn tuyệt đối để chỉ ra vị trí của module.
Thế nào là lệnh ‘import’ trong Python?
Lệnh import
trong ngôn ngữ lập trình Python thường được dùng để nhập những module khác vào chương trình. Thông qua việc dùng nó, người dùng sẽ dễ dàng tiếp cận được hàm, lớp hay biến đã được định nghĩa trong chính module đó.
![Hình 3. Cách ‘Import’ module trong Python](/images/2023-06/module-trong-python-3.jpg)
Ví dụ: Chúng ta muốn dùng module math thì nên dùng lệnh import
sau đây:
import math
print(math.pi) # output: 3.141592653589793
print(math.sqrt(25)) # output: 5.0
Từ đoạn mã trên có thể thấy rằng lệnh import
được dùng cho việc nhập module tương ứng với định danh mới. Nói cách khác, nó sẽ cực kỳ cần thiết trong việc hạn chế xung đột tên trong chương trình của bạn.
import math as m
print(m.pi) # output: 3.141592653589793
print(m.sqrt(25)) # output: 5.0
Ngoài ra, chúng ta có thể dùng lệnh from
để nhập những thành phần chuyên biệt trong module.
from math import pi, sqrt
print(pi) # output: 3.141592653589793
print(sqrt(25)) # output: 5.0
Trong trường hợp người dùng cần nhập hết những thành phần trong module, ký tự ‘*’ sẽ giúp bạn làm được điều này. Nhưng chúng tôi không đánh giá cao vì đa phần nó sẽ làm cho đoạn code bạn khó đọc và bị xung đột tên.
from math import *
print(pi) # output: 3.141592653589793
print(sqrt(25)) # output: 5.0
Khi người dùng xài import
hay from
, lúc này Python sẽ tìm kiếm module trong những thư mục đó. Không những vậy, để chỉ định vị trí trong module người dùng có thể dùng đường dẫn tuyệt đối.
Dùng ‘as’ để đổi tên module trong Python
Từ khóa as
được dùng cho việc đổi tên module trong Python trong quá trình dùng lệnh import
để nhập nó vào chương trình. Nói cách khác, điều này cực kỳ cần thiết khi người dùng muốn module của mình mang tên khác để không xảy ra sự trùng lặp tên với các hàm, lớp hay biến khác trong dự án của họ.
Để giúp các bạn hiểu thêm, chúng tôi xin trình bày ví dụ bên dưới. Ví dụ yêu cầu đổi tên module math thành m trong quá trình sử dụng thì chúng ta phải dùng lệnh import
.
import math as m
print(m.pi) # output: 3.141592653589793
print(m.sqrt(25)) # output: 5.0
Trên thực tế, có thể dùng bất cứ tên nào khi muốn đổi tên trong module trong việc dùng từ khóa as
. Thậm chí, để đổi tên cho các biến, lớp, hay hàm thì việc dùng as
là điều khả dĩ.
from math import pi as PI, sqrt as square_root
print(PI) # output: 3.141592653589793
print(square_root(25)) # output: 5.0
Như các bạn đã thấy, pi đã được chuyển thành PI và sqrt được chuyển thành square_root. Thông qua hành động này, người dùng được phép xài tên mới nhằm tham chiếu tới những thành phần được nhập mà không nhất thiết phải dùng tên gốc như ban đầu.
Làm thế nào để xem thuộc tính và phương thức trong module?
Người dùng được phép xem thuộc tính và phương thức trong module thông qua việc áp dụng hàm dir()
. Hàm này có nhiệm vụ đưa ra danh sách những chuỗi mà mỗi chuỗi là tương ứng với tên của một thuộc tính hay phương thức cho một đối tượng mà nó truyền vào.
Ví dụ: Các bạn muốn xem danh sách những thuộc tính/phương thức trong module math thì dùng hàm dir()
như bên dưới.
import math
print(dir(math))
Lúc này, kết quả hiển thị là danh sách những chuỗi. Mỗi chuỗi này sẽ tượng trưng cho một phương thức hay thuộc tính trong module math. Mặt khác, người dùng hoàn toàn có thể tận dụng những thông tin đưa về từ hàm dir()
nhằm tiếp cận những thành phần trong module hay cách dùng.
Ví dụ: dùng hàm help()
để xem những thông tin liên quan đến phương thức hay lớp được liệt kê thông qua hàm dir()
.
import math
print(dir(math))
# Xem thông tin về phương thức sqrt
help(math.sqrt)
Khi chạy xong đoạn code trên, các bạn sẽ dễ dàng biết được những thông tin liên quan đến phương thức sqrt và kèm theo những tham số đi cùng.
Cách tải lại module với hàm reload
Chúng ta được phép tải lại module đã nhập vào chương trình thông qua việc áp dụng hàm reload
trong module importlib
. Lúc này, hàm reload
có thể tải lại module từ việc chỉ định và cập nhật những thay đổi gần nhất mà người dùng đã làm trong module này.
Sau đây, hãy tạo một module với tên my_module.py.
# my_module.py
def hello():
print("Hello, world!")
# Tiếp đến, nhập module trên vào và áp dụng hàm ‘hello()’ cho việc in chuỗi “Hello,world!”.
import my_module
my_module.hello() # output: Hello, world!
Trong trường hợp người dùng muốn thay đổi trong file ‘my_module.py’ thì nên tải lại module và sau đó cập nhập những thay đổi trong chính dự án thông qua việc dùng hàm ‘reload()’.
Ví dụ: người dùng đã chèn hàng mới vào hàm hello()
trong file my_module.py như bên dưới
# my_module.py
def hello():
print("Hello, world!")
print("How are you today?")
# Sau đó dùng hàm ‘reload()’ để tải lại module ‘my_module’. Cuối cùng, hãy cập nhật những thay đổi mới.
from importlib import reload
import my_module
my_module.hello() # output: Hello, world!
reload(my_module)
my_module.hello() # output: Hello, world! How are you today?
Các bạn nên nhớ việc dùng hàm reload()
để tải lại module trong dự án sẽ dẫn đến tình trạng mất cân bằng và xung đột giữa những module. Do đó, cần phải chú ý khi dùng hàm reload()
và chắc chắn là việc tải lại module sẽ không dẫn đến quá trình xung đột cho những module khác trong dự án.
Làm thế nào để xem những module có sẵn trong Python?
Người dùng hãy sử dụng module sys
để phục vụ cho việc xem danh sách những module tồn tại sẵn trong chương trình. Nói cách khác, module sys
sẽ hỗ trợ các biến, hằng, hay chức năng được dùng cho việc tương tác với trình thông dịch Python và trong hệ thống.
Bên cạnh đó, một trong số những biến được hỗ trợ từ sys
là modules
. Đây được xem là từ điển chứa những thông tin về những module đã nhập vào chương trình. Lúc này, hãy dùng sys.modules.keys()
để rút danh sách những module được nhập vào dự án hay áp dụng hàm dir()
để rút trích danh sách chứa những thành phần từ module sys
cũng như truy tìm thuộc tính modules
.
Ví dụ:
import sys
# Lấy danh sách các module đã được nhập vào trong chương trình
print(sys.modules.keys())
Từ đoạn code trên sau khi chạy sẽ cho ra một danh sách những chuỗi mà mỗi chuỗi biểu thị cho tên cho mỗi module đã được nhập vào. Ngoài ra, các bạn có thể dùng trang web từ Python để nghiên cứu về những module được hỗ trợ chính trong dự án Python. Trang chủ của Python sẽ hỗ trợ đầy đủ những thông tin về module kèm theo làm sao sử dụng chúng hiệu quả.
Kết
Chúng tôi đã tổng hợp đầy đủ những thông tin thiết yếu liên quan đến việc sử dụng module trong Python. Không những thế, người dùng cũng nắm được làm sao tạo module và gọi đến module đó.