Mục lục

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly

Cách viết mô-đun trong Python 3

Ngày đăng: November 8, 2023

Giới thiệu

Mô-đun Python là các tệp .py bao gồm mã Python. Bất kỳ tệp Python nào cũng có thể được tham chiếu dưới dạng mô-đun.

Một số mô-đun có sẵn thông qua Python Standard Library và do đó được cài đặt cùng với bản cài đặt Python của bạn. Những cái khác có thể được cài đặt bằng package manager (hệ thống quản lý gói) pip của Python. Ngoài ra, bạn có thể tạo các mô-đun Python của riêng mình vì các mô-đun bao gồm các tệp Python .py.

Hướng dẫn này sẽ hướng dẫn bạn viết các mô-đun Python để sử dụng trong các tệp lập trình khác.

Điều kiện tiên quyết

Bạn nên cài đặt Python 3 và thiết lập môi trường lập trình trên máy tính hoặc máy chủ của mình. Nếu chưa thiết lập môi trường lập trình, bạn có thể tham khảo hướng dẫn cài đặt và thiết lập cho môi trường lập trình cục bộ hoặc môi trường lập trình trên máy chủ phù hợp với hệ điều hành của bạn (Ubuntu, CentOS, Debian, v.v.)

Viết và nhập mô-đun

Viết một mô-đun cũng giống như viết bất kỳ tệp Python nào khác. Các mô-đun có thể chứa các định nghĩa về hàm, lớp và biến mà sau đó có thể được sử dụng trong các chương trình Python khác.

Thông tin: Để làm theo mã ví dụ trong hướng dẫn này, hãy mở shell tương tác Python trên hệ thống cục bộ của bạn bằng cách chạy lệnh python3. Sau đó, bạn có thể sao chép, dán hoặc chỉnh sửa các ví dụ bằng cách thêm chúng sau dấu nhắc >>>.

Từ môi trường lập trình cục bộ Python 3 hoặc môi trường lập trình dựa trên máy chủ của chúng tôi, hãy bắt đầu bằng cách tạo một tệp hello.py mà sau này chúng tôi sẽ nhập vào một tệp khác.

Để bắt đầu, chúng ta sẽ tạo một hàm print Hello, World!:

hello.py
# Define a function
def world():
    print("Hello, World!")

Nếu chúng ta chạy chương trình trên dòng lệnh với python hello.py thì sẽ không có gì xảy ra vì chúng ta chưa yêu cầu chương trình làm bất cứ điều gì.

Hãy tạo một tệp thứ hai trong cùng thư mục có tên main_program.py để chúng ta có thể nhập mô-đun mà chúng ta vừa tạo và sau đó gọi hàm. Tệp này cần phải nằm trong cùng một thư mục để Python biết tìm mô-đun ở đâu, vì đây không phải là mô-đun tích hợp sẵn.

main_program.py
# Import hello module
import hello


# Call function
hello.world()

Vì đang nhập một mô-đun nên chúng ta cần gọi hàm bằng cách tham chiếu tên mô-đun bằng ký hiệu dấu chấm.

Thay vào đó, chúng ta có thể nhập mô-đun from hello import world và gọi hàm trực tiếp là world(). Bạn có thể tìm hiểu thêm về phương pháp này bằng cách đọc Cách sử dụng from … import khi nhập mô-đun.

Bây giờ, chúng ta có thể chạy chương trình trên dòng lệnh:

  1. python main_program.py

Khi thực hiện, chúng tôi sẽ nhận được kết quả sau:

Output
Hello, World!

Để xem cách chúng ta có thể sử dụng các biến trong một mô-đun, hãy thêm định nghĩa biến trong tệp hello.py:

hello.py
# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"

Tiếp theo, chúng ta sẽ gọi biến trong hàm print() trong tệp main_program.py:

main_program.py
# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

Khi chúng tôi chạy lại chương trình, chúng tôi sẽ nhận được kết quả sau:

Output
Hello, World! Sammy

Cuối cùng, hãy định nghĩa một lớp trong tệp hello.py. Chúng ta sẽ tạo lớp Octopus với các thuộc tính namecolor cũng như một hàm sẽ print ra các thuộc tính khi được gọi.

hello.py
# Define a function
def world():
    print("Hello, World!")

# Define a variable
shark = "Sammy"


# Define a class
class Octopus:
    def __init__(self, name, color):
        self.color = color
        self.name = name

    def tell_me_about_the_octopus(self):
        print("This octopus is " + self.color + ".")
        print(self.name + " is the octopus's name.")

Bây giờ chúng ta sẽ thêm lớp vào cuối tệp main_program.py:

main_program.py
# Import hello module
import hello


# Call function
hello.world()

# Print variable
print(hello.shark)

# Call class
jesse = hello.Octopus("Jesse", "orange")
jesse.tell_me_about_the_octopus()

Khi chúng ta đã gọi lớp Octopus bằng hello.Octopus(), chúng ta có thể truy cập các hàm và thuộc tính của lớp trong namespace (không gian tên) của tệp main_program.py. Điều này cho phép chúng ta viết jesse.tell_me_about_the_octopus() ở dòng cuối cùng mà không cần dùng hello. Ví dụ, chúng ta cũng có thể gọi một trong các thuộc tính của lớp như jesse.color mà không cần tham chiếu đến tên của mô-đun hello.

Khi chạy chương trình, chúng ta sẽ nhận được kết quả sau:

Output
Hello, World! Sammy This octopus is orange. Jesse is the octopus's name.

Điều quan trọng cần ghi nhớ là mặc dù mô-đun thường là định nghĩa nhưng chúng cũng có thể triển khai mã. Để xem cách thức hoạt động của nó, hãy viết lại tệp hello.py của chúng tôi để nó triển khai hàm world():

hello.py
# Define a function
def world():
    print("Hello, World!")

# Call function within module
world()

Chúng tôi cũng đã xóa các định nghĩa khác trong tệp.

Bây giờ, trong tệp main_program.py của chúng tôi, chúng tôi sẽ xóa mọi dòng ngoại trừ câu lệnh import:

main_program.py
# Import hello module
import hello

Khi chạy main_program.py chúng ta sẽ nhận được kết quả sau:

Output
Hello, World!

Điều này là do mô-đun hello đã triển khai hàm world(), sau đó được chuyển đến main_program.py và thực thi khi main_program.py chạy.

Mô-đun là một tệp chương trình Python bao gồm các định nghĩa hoặc mã mà bạn có thể tận dụng trong các tệp chương trình Python khác.

Truy cập các mô-đun từ thư mục khác

Các mô-đun có thể hữu ích cho nhiều dự án lập trình và trong trường hợp đó, việc giữ một mô-đun trong một thư mục cụ thể được gắn với một dự án cụ thể sẽ ít có ý nghĩa hơn.

Nếu bạn muốn sử dụng mô-đun Python từ một vị trí không phải cùng thư mục chứa chương trình chính của bạn, bạn có một số tùy chọn.

Đường dẫn nối thêm

Một tùy chọn là gọi đường dẫn của mô-đun thông qua các tệp lập trình sử dụng mô-đun đó. Đây được coi là một giải pháp tạm thời hơn có thể được thực hiện trong quá trình phát triển vì nó không cung cấp mô-đun trên toàn hệ thống.

Để nối đường dẫn của mô-đun vào một tệp lập trình khác, bạn sẽ bắt đầu bằng cách nhập mô-đun sys cùng với bất kỳ mô-đun nào khác mà bạn muốn sử dụng trong tệp chương trình chính của mình.

Mô-đun sys là một phần của Python Standard Library, cung cấp các tham số và hàm dành riêng cho hệ thống mà bạn có thể sử dụng trong chương trình của mình để đặt đường dẫn của mô-đun mà bạn muốn triển khai.

Ví dụ: giả sử chúng tôi đã di chuyển tệp hello.py và nó hiện nằm trên đường dẫn /usr/sammy/, trong khi tệp main_program.py nằm trong một thư mục khác.

Trong tệp main_program.py, chúng ta vẫn có thể nhập mô-đun hello bằng cách nhập mô-đun sys rồi thêm /usr/sammy/ vào đường dẫn mà Python kiểm tra tệp.

main_program.py
import sys
sys.path.append('/usr/sammy/')

import hello
...

Miễn là bạn đặt chính xác đường dẫn cho tệp hello.py, bạn sẽ có thể chạy tệp main_program.py mà không gặp bất kỳ lỗi nào và nhận được kết quả tương tự như trên khi hello.py nằm trong cùng thư mục.

Thêm mô-đun vào đường dẫn Python

Tùy chọn thứ hai mà bạn có là thêm mô-đun vào đường dẫn nơi Python kiểm tra các mô-đun và package. Đây là một giải pháp lâu dài hơn giúp mô-đun có sẵn trên toàn môi trường hoặc toàn hệ thống, làm cho phương pháp này trở nên linh hoạt hơn.

Để tìm hiểu đường dẫn Python kiểm tra, hãy chạy trình thông dịch Python từ môi trường lập trình của bạn:

  1. python3

Tiếp theo, nhập mô-đun sys:

  1. import sys

Sau đó yêu cầu Python print ra đường dẫn hệ thống:

  1. print(sys.path)

Tại đây, bạn sẽ nhận được một số đầu ra có ít nhất một đường dẫn hệ thống. Nếu bạn đang ở trong môi trường lập trình, bạn có thể nhận được một số. Bạn sẽ muốn tìm mô-đun trong môi trường bạn hiện đang sử dụng, nhưng bạn cũng có thể muốn thêm mô-đun vào đường dẫn Python của hệ thống chính của mình. Những gì bạn đang tìm kiếm sẽ tương tự như thế này:

Output
'/usr/sammy/my_env/lib/python3.5/site-packages'

Bây giờ bạn có thể di chuyển tệp hello.py của mình vào thư mục đó. Khi đã hoàn tất, bạn có thể nhập mô-đun hello như bình thường:

main_program.py
import hello
...

Khi bạn chạy chương trình của mình, nó sẽ hoàn tất mà không có lỗi.

Việc sửa đổi đường dẫn của mô-đun có thể đảm bảo rằng bạn có thể truy cập vào mô-đun bất kể bạn đang ở thư mục nào. Điều này đặc biệt hữu ích nếu bạn có nhiều dự án tham chiếu đến một mô-đun cụ thể.

Kết luận

Viết một mô-đun Python cũng giống như viết bất kỳ tệp .py Python nào khác. Hướng dẫn này trình bày cách viết các định nghĩa trong một mô-đun, sử dụng các định nghĩa đó trong một tệp lập trình Python khác và xem xét các tùy chọn về vị trí lưu giữ mô-đun để truy cập vào nó.

Bạn có thể tìm hiểu thêm về cách cài đặt và nhập mô-đun bằng cách đọc Cách nhập mô-đun trong Python 3.

Tham gia kênh Telegram của CloudFly để nhận thêm ưu đãi và không bỏ lỡ bất kỳ khuyến mãi nào từ CloudFly
Chia sẻ

0 câu trả lời