Nhập mô-đun vào Python với các ví dụ
⚡ Tóm tắt thông minh
Nhập vào Python Cho phép một tệp tin tái sử dụng các biến, hàm và lớp được định nghĩa trong một tệp tin khác. Một mô-đun chỉ đơn giản là một tệp tin .py, trong khi một gói (package) nhóm các mô-đun liên quan lại với nhau trong một thư mục được đánh dấu bằng tệp tin __init__.py.

Các phần bên dưới giải thích về các mô-đun, gói, các kiểu nhập khác nhau và cách thức hoạt động của nhập tuyệt đối và tương đối trong [tên phần mềm]. Python.
Các mô-đun trong là gì Python?
Một mô-đun là một tập tin có Python Mã nguồn. Mã nguồn có thể ở dạng biến, hàm hoặc một lớp được định nghĩa. Tên tệp tin trở thành tên mô-đun.
Ví dụ: nếu tên tệp của bạn là guru99.py thì tên mô-đun sẽ là guru99. Với chức năng mô-đun, bạn có thể chia mã của mình thành các tệp khác nhau thay vì viết mọi thứ bên trong một tệp.
Là gì Python mô-đun nhập khẩu?
Một tập tin được coi là một mô-đun trong PythonĐể sử dụng mô-đun, bạn phải nhập nó bằng cách sử dụng... nhập khẩu Từ khóa. Các hàm hoặc biến có trong tệp có thể được sử dụng trong tệp khác bằng cách nhập mô-đun. Chức năng này có sẵn trong các ngôn ngữ khác như... TypeScript, JavaKịch bản, Java, Ruby, v.v.
Cách tạo và nhập mô-đun vào Python?
Bây giờ chúng ta sẽ tạo một mô-đun và nhập nó vào một tệp khác.
Đây là quy trình tạo và nhập mô-đun như trong ảnh chụp màn hình:
Thực hiện theo các bước được đưa ra để tạo một mô-đun trong Python.
Cấu trúc thư mục được sử dụng để kiểm tra mã như sau:
modtest/ test.py display.py
Bước 1) Tạo một tệp và đặt tên là test.py
Bước 2) Bên trong test.py tạo một hàm có tên display_message()
Def display_message():
return "Welcome to Guru99 Tutorials!"
Bước 3) Bây giờ hãy tạo một tệp khác display.py.
Bước 4) Bên trong file display.py, hãy nhập file test.py của module, như hình bên dưới:
import test
Khi nhập khẩu, bạn không cần phải đề cập đến tệp test.py mà chỉ cần tên của tệp đó.
Bước 5) Sau đó, bạn có thể gọi hàm display_message() từ test.py bên trong display.py. Bạn cần sử dụng module_name.function_name.
Ví dụ: test.display_message().
Import test
print(test.display_message())
Bước 6) Khi bạn chạy tập tin display.py, bạn sẽ nhận được kết quả sau: Đầu ra:
Welcome to Guru99 Tutorials!
Nhập một lớp vào Python
Trước đó, chúng ta đã thấy một mô-đun đơn giản với một hàm. Ở đây, chúng ta sẽ tạo một lớp và tham chiếu đến lớp đó trong một tệp khác.
Cấu trúc thư mục để kiểm thử mã như sau:
myproj/ Car.py display.py
Tạo một tệp có tên Car.py với mã sau:
Tên tập tin: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
Trong tập tin Car.py, có các thuộc tính brand_name, model và manu_year. Các hàm được định nghĩa bên trong lớp là car_details(), get_Car_brand(), get_Car_model().
Bây giờ chúng ta hãy sử dụng tệp Car.py làm mô-đun trong một tệp khác có tên display.py.
Tên tập tin: display.py
import Car car_det = Car.Car("BMW","Z5", 2020) print(car_det.brand_name) print(car_det.car_details()) print(car_det.get_Car_brand()) print(car_det.get_Car_model())
Đầu ra:
BMW Car brand is BMW Car model is Z5 Car manufacture year is 2020 Car brand is BMW Car model is Z5
Như vậy, chúng ta có thể truy cập tất cả các biến và hàm từ Car.py bằng cách sử dụng mô-đun Car.
Sử dụng mô-đun từ để nhập
Bạn có thể chỉ nhập một phần nhỏ của mô-đun, tức là chỉ các hàm và tên biến cần thiết từ mô-đun thay vì nhập toàn bộ mã.
Khi bạn chỉ muốn nhập những thứ cụ thể, bạn có thể sử dụng từ khóa “from” để nhập những gì bạn muốn.
Vì vậy cú pháp là
from module import your function_name , variables,... etc.
Cấu trúc thư mục được sử dụng để kiểm tra mã như sau:
modtest/ test.py display.py
Trong file test.py có 2 hàm như sau:
Tên tập tin: test.py
defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Bây giờ bạn cần hàm display_message(). Hàm hoặc biến mà bạn đang nhập có thể được truy cập trực tiếp như hình bên dưới:
Tên tập tin: display.py
from test import display_message print(display_message())
Đầu ra:
Welcome to Guru99 Tutorials!
Nếu bạn sử dụng hàm display_message1(), nó sẽ báo lỗi rằng hàm này chưa được định nghĩa như hình bên dưới:
from test import display_message print(display_message1())
Đầu ra:
Traceback (most recent call last): File "display.py", line 3, in <module> print(display_message1()) Name Error: name 'display_message1' is not defined
Nhập mọi thứ từ mô-đun
Lệnh import cho phép bạn nhập toàn bộ mô-đun bằng cách sử dụng từ khóa import theo sau là tên mô-đun, tức là tên tệp hoặc thư viện cần sử dụng.
Cú pháp:
Import module
Hoặc bằng cách sử dụng
from module import *
Cấu trúc thư mục được sử dụng để kiểm tra mã như sau:
modtest/ test.py display.py
Sau đây là chi tiết mã bên trong test.py
my_name = "Guru99" my_address = "Mumbai" defdisplay_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Sử dụng mô-đun nhập
Khi chỉ sử dụng tên mô-đun nhập khẩu, để tham chiếu đến các biến và hàm bên trong mô-đun, bạn phải thêm tên mô-đun vào trước chúng.
Ví dụ
Tên tập tin: display.py
Import test print(test.display_message()) print(test.display_message1()) print(test.my_name) print(test.my_address)
Tên mô-đun "test" được sử dụng để chỉ các hàm và biến bên trong mô-đun "test".
Đầu ra:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Sử dụng nhập *
Chúng ta hãy xem một ví dụ sử dụng nhập khẩu *. Sử dụng nhập khẩu *, các hàm và biến có thể truy cập trực tiếp, như trong ví dụ bên dưới:
from test import * print(display_message()) print(display_message1()) print(my_name) print(my_address)
Đầu ra:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Hàm dir( )
Hàm dir() là một hàm tích hợp sẵn trong PythonPhương thức `dir()` trả về tất cả các thuộc tính và phương thức, bao gồm cả các thuộc tính tích hợp sẵn của đối tượng được cung cấp.
Vì vậy, khi sử dụng hàm `dir()` trên mô-đun, nó sẽ trả về các biến và hàm có trong mô-đun đó.
Dưới đây là một ví dụ hoạt động của hàm `dir()` trên một module. Chúng ta có một lớp tên là `Car.py`, hãy nhập lớp `Car` và gán nó cho hàm `dir()` để xem kết quả.
Cấu trúc thư mục để test code sẽ như sau:
test prop/ Car.py test.py
Tên tập tin: Car.py
class Car: brand_name = "BMW" model = "Z4" manu_year = "2020" def __init__(self, brand_name, model, manu_year): self.brand_name = brand_name self.model = model self.manu_year = manu_year def car_details(self): print("Car brand is ", self.brand_name) print("Car model is ", self.model) print("Car manufacture year is ", self.manu_year) def get_Car_brand(self): print("Car brand is ", self.brand_name) def get_Car_model(self): print("Car model is ", self.model)
Tên tập tin: test.py
import Car class_contents = dir(Car) print(class_contents)
Kết quả đầu ra cung cấp cho chúng ta tên của lớp và tất cả các hàm được xác định trong Car.py.
Bạn cũng có thể thử sử dụng dir() trên mô-đun tích hợp có sẵn trong PythonChúng ta hãy thử làm tương tự trên... json mô-đun như được hiển thị trong ví dụ bên dưới. Nó sẽ hiển thị tất cả các thuộc tính và phương thức có sẵn trong mô-đun. json mô-đun.
Import json
json_details = dir(json)
print(json_details)
Đầu ra:
['JSONDecodeError', 'JSONDecoder', 'JSONEncoder', '__all__', '__author__', '__bu iltins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__pac kage__', '__path__', '__spec__', '__version__', '_default_decoder', '_default_en coder', 'codecs', 'decoder', 'detect_encoding', 'dump', 'dumps', 'encoder', 'loa d', 'loads', 'scanner']
Gói
Một gói là một thư mục chứa tất cả các mô-đun được xác định bên trong nó. Để thực hiện một Python Trình thông dịch sẽ coi nó như một gói, thư mục của bạn cần có tệp __init__.py. Tệp __init__.py biến thư mục đó thành một gói. Đây là cấu trúc của gói mà chúng ta sẽ làm việc.
Tên của gói là gói của tôiĐể bắt đầu làm việc với gói này, hãy tạo một thư mục có tên là mypackage/. Bên trong thư mục đó, tạo một tệp trống có tên là __init__.py. Tạo thêm 3 tệp nữa là module1.py, module2.py và module3.py và định nghĩa các hàm như được hiển thị trong ảnh chụp màn hình. Dưới đây là chi tiết của module1.py, module2.py và module3.py
module1.py
def mod1_func1(): print("Welcome to Module1 function1") def mod1_func2(): print("Welcome to Module1 function2") def mod1_func3(): print("Welcome to Module1 function3")
module2.py
def mod2_func1(): print("Welcome to Module2 function1") def mod2_func2(): print("Welcome to Module2 function2") def mod2_func3(): print("Welcome to Module2 function3")
module3.py
def mod3_func1(): print("Welcome to Module3 function1") def mod3_func2(): print("Welcome to Module3 function2") def mod3_func3(): print("Welcome to Module3 function3")
gói Đã sẵn sàng để sử dụng. Bây giờ hãy gọi gói này bên trong bất kỳ tệp nào của bạn như được hiển thị bên dưới trong test.py:
Ở đây, mypackage.module1 được nhập và đặt tên bí danh là mode1Tương tự, bạn có thể sử dụng các mô-đun khác như module2.py và module3.py từ thư mục mypackage.
import mypackage.module1 as mod1 print(mod1.mod1_func1()) print(mod1.mod1_func2()) print(mod1.mod1_func2())
Đầu ra:
Welcome to Module1 function1 None Welcome to Module1 function2 None Welcome to Module1 function2 None
Chúng ta vừa minh họa gói này bằng một mô-đun đơn giản với các hàm bên trong. Tùy thuộc vào dự án của bạn, bạn cũng có thể tạo các gói có các gói con, tức là các thư mục con chứa các mô-đun với các lớp được định nghĩa.
Python Đường dẫn tìm kiếm mô-đun
Trong quá trình thực hiện, khi Python đi qua nhập tên mô-đunTrình thông dịch cố gắng định vị mô-đun. Nó tìm kiếm mô-đun trong danh sách mô-đun tích hợp sẵn, và sau đó trong tất cả các thư mục được định nghĩa bên trong sys.path.
Tóm lại, trình thông dịch sẽ thực hiện tìm kiếm sau để xác định vị trí mô-đun:
- Trong thư mục hiện tại của bạn.
- Trong danh sách mô-đun tích hợp sẵn.
- Bên trong các thư mục sys.path.
Bạn có thể lấy thông tin chi tiết về sys.path bằng cách nhập mô-đun sys và in sys.path. Nó sẽ cung cấp cho bạn danh sách các thư mục như hình bên dưới:
importsys
print(sys.path)
Đầu ra:
['Python Latest\\task2', 'Users\\AppData\\Local\\Programs\\Python\ \Python37\\python37.zip', 'Users\\AppData\\Local\\Programs\\Python\\P ython37\\DLLs']
Bạn cũng có thể sửa đổi đường dẫn và giữ các thư mục theo yêu cầu của mình.
Sử dụng bí danh mô-đun trong quá trình nhập
Bạn cũng có thể chuyển đổi tên mô-đun thành dạng ngắn gọn hơn bằng cách đặt cho nó một tên bí danh. Tên bí danh có thể được tạo bằng cách sử dụng... as từ khóa.
Cú pháp:
import filename as alias name
Cấu trúc thư mục để test code sẽ như sau:
Mod test/ test.py display.py
Sau đây là mã bên trong test.py
my_name = "Guru99" my_address = "Mumbai" def display_message(): return "Welcome to Guru99 Tutorials!" def display_message1(): return "All about Python!"
Bây giờ chúng ta sẽ sử dụng một bí danh cho test.py trong display.py.
Import test as t print(t.display_message()) print(t.display_message1()) print(t.my_name) print(t.my_address)
Tên bí danh được sử dụng cho mô-đun kiểm thử là t. Vì vậy, các hàm và biến từ test.py có thể được tham chiếu bằng tên bí danh t.
Đầu ra:
Welcome to Guru99 Tutorials! All about Python! Guru99 Mumbai
Nhập khẩu tuyệt đối và tương đối ở Python
Bây giờ bạn đã biết cách nhập tệp dưới dạng mô-đun bên trong một tệp khác. Bây giờ chúng ta hãy xem cách quản lý các tập tin có sẵn trong các thư mục. Các tập tin trong thư mục có thể được nhập bằng cách sử dụng nhập tuyệt đối hoặc tương đối.
Hãy xem xét bạn có cấu trúc thư mục dự án của mình, như hiển thị bên dưới:
Thư mục gốc là myproject/. Nó có hai thư mục con là package1 và package2.
Thư mục package1 chứa hai mô-đun, module1.py và module2.py.
Thư mục package2 có một lớp myclass.py, một gói con subpkg có module3.py và module4.py cuối cùng.
- Trong file module1.py, có một hàm tên là myfunc1.
- Trong file module2.py, có một hàm tên là myfunc2.
- Trong file module3.py, có một hàm tên là myfunc3.
- Trong file module4.py, có một hàm tên là myfunc4.
Sử dụng nhập khẩu tuyệt đối
Đối với việc nhập khẩu tuyệt đối, bạn cần thêm toàn bộ đường dẫn của mô-đun ngay từ thư mục gốc của dự án.
Bây giờ chúng ta hãy xem cách sử dụng import tuyệt đối để tham chiếu đến các hàm có trong mỗi module.
Để sử dụng hàm myfunc1, bạn cần nhập nó như sau:
from package1.module1 import myfunc1 or from package1 import module1 module1.myfunc1()
Để sử dụng hàm myfunc3, bạn cần nhập nó như sau:
from package1.subpkg.module3 import myfunc3 or from package1.subpkg import module3 module3.myfunc3()
Ưu điểm và nhược điểm của việc sử dụng nhập khẩu tuyệt đối
Dưới đây là những lợi thế của việc sử dụng nhập khẩu tuyệt đối:
- Nó trở nên dễ dàng tracGửi lại các mô-đun để kiểm tra mã.
- Dễ sử dụng và rất đơn giản.
- Nếu dự án được chuyển sang một đường dẫn khác, các tệp nhập khẩu vẫn sẽ giữ nguyên.
Nhược điểm của việc sử dụng nhập khẩu tuyệt đối
Dưới đây là những nhược điểm của việc sử dụng import tuyệt đối:
- Đường dẫn nhập khẩu có thể trở nên rất dài nếu các mô-đun được lồng nhau và tên mô-đun dài.
Sử dụng nhập khẩu tương đối
Với cấu trúc thư mục đã đề cập ở trên, chúng ta sẽ xem cách nhập các thư mục tương ứng bằng cách sử dụng nhập tương đối.
Trong kiểu nhập tương đối, mô-đun cần nhập sẽ được xác định dựa trên vị trí hiện tại, tức là vị trí chứa câu lệnh nhập.
cú pháp
Trong các lần nhập tương đối, bạn cần thêm dấu chấm (.) trước tên mô-đun khi nhập bằng cách sử dụng từ.
Sẽ có hai dấu chấm (..) trước tên mô-đun nếu mô-đun đó nằm ở cấp cao hơn vị trí hiện tại.
Dựa vào sơ đồ cấu trúc thư mục đã đề cập ở trên, chúng ta có các mô-đun sau với chức năng tương ứng mà chúng ta cần tham khảo.
- Trong file module1.py, có một hàm tên là myfunc1.
- Trong file module2.py, có một hàm tên là myfunc2.
- Trong file module3.py, có một hàm tên là myfunc3.
- Trong file module4.py, có một hàm tên là myfunc4.
Để sử dụng hàm myfunc1, bạn cần nhập nó như sau:
from .module1 import myfunc1
Để sử dụng hàm myfunc3, bạn cần nhập nó như sau:
from .subpkg.module3 import myfunc3
Ưu điểm của nhập khẩu tương đối
- Thật dễ dàng để làm việc với hàng nhập khẩu tương đối.
- Từ vị trí hiện tại, lượng nhập khẩu có thể được rút ngắn so với mức nhập khẩu tuyệt đối.
Nhược điểm của nhập khẩu tương đối
- Sử dụng phương pháp nhập khẩu tương đối, rất khó để tracTrở lại nơi mã nguồn được lưu trữ.



