Cách viết module trong Python 3
Mô-đun Python là các file.py
bao gồm mã Python. Các file Python nào cũng có thể được tham chiếu dưới dạng module . Một số module có sẵn thông qua Thư viện chuẩn Python và do đó được cài đặt cùng với cài đặt Python của bạn. Những người khác có thể được cài đặt bằng pip
quản lý gói của Python. Ngoài ra, bạn có thể tạo các module Python của riêng mình vì các module bao gồm các file .py
Python.
Hướng dẫn này sẽ hướng dẫn bạn viết các module Python để sử dụng trong các file lập trình khác.
Viết và nhập module
Viết một module cũng giống như viết các file Python nào khác. Mô-đun có thể chứa các định nghĩa về hàm, lớp và biến sau đó được dùng trong các chương trình Python khác.
Từ môi trường lập trình local Python 3 của ta hoặc môi trường lập trình dựa trên server , hãy bắt đầu bằng cách tạo file hello.py
mà sau này ta sẽ nhập vào file khác.
Để bắt đầu, ta sẽ tạo một hàm in Hello, World!
:
# Define a function def world(): print("Hello, World!")
Nếu 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ì ta không yêu cầu chương trình làm bất cứ điều gì.
Hãy tạo một file thứ hai trong cùng một folder có tên là main_program.py
để ta có thể nhập module ta vừa tạo và sau đó gọi hàm. Tệp này cần nằm trong cùng một folder để Python biết nơi tìm module vì nó không phải là module tích hợp sẵn.
# Import hello module import hello # Call function hello.world()
Bởi vì ta đang nhập một module , ta cần gọi hàm bằng cách tham chiếu tên module trong ký hiệu dấu chấm.
Thay vào đó, ta có thể nhập module như from hello import world
và gọi hàm trực tiếp dưới dạng 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 module .
Bây giờ, ta có thể chạy chương trình trên dòng lệnh:
- python main_program.py
Khi ta làm như vậy, ta sẽ nhận được kết quả sau:
OutputHello, World!
Để xem cách ta có thể sử dụng các biến trong một module , hãy thêm định nghĩa biến trong file hello.py
của ta :
# Define a function def world(): print("Hello, World!") # Define a variable shark = "Sammy"
Tiếp theo, ta sẽ gọi biến trong một hàm print()
trong file main_program.py
của ta :
# Import hello module import hello # Call function hello.world() # Print variable print(hello.shark)
Khi ta chạy lại chương trình, ta sẽ nhận được kết quả sau:
OutputHello, World! Sammy
Cuối cùng, hãy cũng xác định một lớp trong file hello.py
. Ta sẽ tạo lớp Octopus
với các thuộc tính name
và color
và một hàm sẽ in ra các thuộc tính khi được gọi.
# 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ờ ta sẽ thêm lớp vào cuối file main_program.py
của ta :
# 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 ta đã gọi lớp Octopus bằng hello.Octopus()
, ta có thể truy cập các chức năng và thuộc tính của lớp trong không gian tên của file main_program.py
. Điều này cho phép ta viết jesse.tell_me_about_the_octopus()
ở dòng cuối cùng mà không cần gọi hello
. Ví dụ, 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 module hello
.
Khi ta chạy chương trình, ta sẽ nhận được kết quả sau:
OutputHello, World! Sammy This octopus is orange. Jesse is the octopus's name.
Điều quan trọng cần nhớ là mặc dù các module thường là định nghĩa, chúng cũng có thể triển khai mã. Để xem cách này hoạt động như thế nào, hãy viết lại file hello.py
của ta để nó triển khai hàm world()
:
# Define a function def world(): print("Hello, World!") # Call function within module world()
Ta cũng đã xóa các định nghĩa khác trong file .
Bây giờ, trong file main_program.py
của ta , ta sẽ xóa mọi dòng ngoại trừ câu lệnh nhập:
# Import hello module import hello
Khi chạy main_program.py
ta sẽ nhận được kết quả sau:
OutputHello, World!
Điều này là do module 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 file 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 file chương trình Python khác.
Truy cập module từ một folder khác
Các module 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 module trong một folder cụ thể gắn với một dự án cụ thể sẽ ít hợp lý hơn.
Nếu bạn muốn sử dụng module Python từ một vị trí khác với cùng một folder chứa chương trình chính của bạn, bạn có một số tùy chọn.
Các đường dẫn tiếp theo
Một tùy chọn là gọi đường dẫn của module thông qua các file lập trình sử dụng module đó. Đây nên được coi là một giải pháp tạm thời có thể được thực hiện trong quá trình phát triển vì nó không làm cho module khả dụng trên toàn hệ thống.
Để nối đường dẫn của một module vào một file lập trình khác, bạn sẽ bắt đầu bằng lệnh module sys
cùng với bất kỳ module nào khác mà bạn muốn sử dụng trong file chương trình chính của bạn .
Mô-đun sys
là một phần của Thư viện chuẩn Python và cung cấp các tham số và chức năng dành riêng cho hệ thống mà bạn có thể sử dụng trong chương trình của bạn để đặt đường dẫn của module mà bạn muốn triển khai.
Ví dụ: giả sử ta đã di chuyển file hello.py
và hiện nó nằm trên đường dẫn /usr/ sammy /
trong khi file main_program.py
nằm trong một folder khác.
Trong file main_program.py
của ta , ta vẫn có thể nhập module hello
bằng lệnh module sys
và sau đó thêm /usr/ sammy /
vào đường dẫn mà Python kiểm tra file .
import sys sys.path.append('/usr/sammy/') import hello ...
Miễn là bạn đặt đúng đường dẫn cho file hello.py
, bạn có thể chạy file 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
ở trong cùng một folder .
Thêm module vào đường dẫn Python
Một tùy chọn thứ hai mà bạn có là thêm module vào đường dẫn nơi Python kiểm tra các module và gói. Đây là một giải pháp lâu dài hơn giúp module khả dụng 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.
Để biết Python kiểm tra đường dẫn nào, hãy chạy trình thông dịch Python từ môi trường lập trình của bạn:
- python
Tiếp theo, nhập module sys
:
- import sys
Sau đó, yêu cầu Python in ra đường dẫn hệ thống:
- print(sys.path)
Tại đây, bạn sẽ nhận được một số kết quả với ít nhất một đường dẫn hệ thống. Nếu bạn đang ở trong một môi trường lập trình, bạn có thể nhận được một số. Bạn cần tìm kiếm module trong môi trường bạn hiện đang sử dụng, nhưng bạn cũng có thể cần thêm module vào đường dẫn Python hệ thống chính của bạn . Những gì bạn đang tìm kiếm sẽ tương tự như sau:
Output'/usr/sammy/my_env/lib/python3.5/site-packages'
Đến đây bạn có thể di chuyển file hello.py
của bạn vào folder đó. Sau khi hoàn tất, bạn có thể nhập module hello
như bình thường:
import hello ...
Khi bạn chạy chương trình của bạn , chương trình sẽ hoàn thành mà không có lỗi.
Việc sửa đổi đường dẫn của module của bạn có thể đảm bảo bạn có thể truy cập vào module dù bạn đang ở folder nào. Điều này rất hữu ích, đặc biệt nếu bạn có nhiều dự án tham chiếu đến một module cụ thể.
Kết luận
Viết module Python cũng giống như viết các file .py
Python nào khác. Hướng dẫn này bao gồm cách viết các định nghĩa trong một module , sử dụng các định nghĩa đó trong một file lập trình Python khác và xem xét các tùy chọn về nơi lưu giữ module để 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 module bằng cách đọc Cách nhập module trong Python 3 .
Các tin liên quan
Cách cài đặt Python 3 và thiết lập môi trường lập trình trên server Ubuntu 16.042017-02-01
Cách khai báo module trong Python 3
2017-02-01
Hiểu Tuples trong Python 3
2017-01-19
Cách tạo các vòng lặp trong Python 3
2017-01-12
Hiểu toàn bộ danh sách trong Python 3
2017-01-12
Cách sử dụng các câu lệnh Break, Continue và Pass khi làm việc với các vòng lặp trong Python 3
2017-01-06
Cách tạo vòng lặp While trong Python 3
2017-01-05
Cách làm việc với dữ liệu ngôn ngữ trong Python 3 bằng Bộ công cụ ngôn ngữ tự nhiên (NLTK)
2017-01-03
Cách tạo Twitterbot bằng Python 3 và Thư viện Tweepy
2016-11-30
Cách tạo ứng dụng Twitter bằng Python
2016-11-23