Ghi chú. Khi nhập bằng từ khóa from
, không sử dụng tên mô-đun khi đề cập đến các thành phần trong mô-đun. Thí dụ. person1["age"]
, không phải mymodule.person1["age"]
Việc sử dụng câu lệnh nhập trong tệp Python của chúng tôi là khá thường xuyên. Ngay cả đối với những Pythonistas có kinh nghiệm, quá trình nhập có thể gây nhầm lẫn, vì không có phương pháp duy nhất nào đảm bảo rằng quá trình nhập sẽ luôn hoạt động
Mặc dù bạn có thể đặt các dự án đơn giản vào một tệp, nhưng hầu hết các dự án phát triển Python sẽ yêu cầu nhiều tệp để quản lý chúng. Điều đó có nghĩa là bạn cần một cách để nhập tệp này vào tệp khác. Tuy nhiên, nhiều Pythonistas thấy việc nhập tệp khó hiểu. May mắn thay, thật dễ dàng nếu bạn biết sự khác biệt giữa các câu lệnh nhập Python khác nhau
Nhập khẩu là gì?
Nhập đề cập đến việc cho phép tệp Python hoặc mô-đun Python truy cập tập lệnh từ một tệp hoặc mô-đun Python khác. Bạn chỉ có thể sử dụng các chức năng và thuộc tính mà chương trình của bạn có thể truy cập. Chẳng hạn, nếu bạn muốn sử dụng các chức năng toán học, trước tiên bạn phải nhập gói toán học. Điều này là do bạn phải xác định mọi thứ bạn muốn sử dụng trong Python trước khi sử dụng chúng
Ví dụ, Python sẽ cung cấp một ____0_______1 cho đoạn mã sau
myPi = math.pi
Điều này là do cả đối tượng
import math
myPi = math.pi
print myPi
2 cũng như các thuộc tính và phương thức của nó đều không có sẵn cho chính ngôn ngữ đó. Để sử dụng đối tượng import math
myPi = math.pi
print myPi
2, trước tiên bạn phải nhập nóimport math
myPi = math.pi
print myPi
Câu lệnh
import math
myPi = math.pi
print myPi
4 thêm đối tượng vào phạm vi hiện tại của chương trình của bạnNhập khẩu hoạt động như thế nào
Các câu lệnh
import math
myPi = math.pi
print myPi
4 thực hiện rất nhiều việc để nhập tệp hoặc mô-đun. Đầu tiên, họ tìm kiếm mô-đun hoặc gói của bạn trong import math
myPi = math.pi
print myPi
6, nơi Python lưu trữ mã đã nhập trước đó của bạn. Nếu Python không thể tìm thấy mô-đun ở đó, thì nó sẽ tìm kiếm nó trong Thư viện chuẩn Python. Nếu Python vẫn không thể tìm thấy mô-đun, nó sẽ đi qua toàn bộ không gian lưu trữ của bạn, bắt đầu với thư mục hiện tại và những thứ được liệt kê trong import math
myPi = math.pi
print myPi
7 của bạn. Nếu tìm thấy mô-đun ở những nơi này, nó sẽ thêm mô-đun đó vào chương trình của bạn, nếu không, nó sẽ đưa ra một import math
myPi = math.pi
print myPi
8Để nhập trực tiếp một mô-đun, bạn chỉ cần đặt tên của mô-đun hoặc gói sau từ khóa
import math
myPi = math.pi
print myPi
4. Xin lưu ý rằng câu lệnh này có phân biệt chữ hoa chữ thườngimport mymodule
Tuy nhiên, Python cung cấp một cú pháp phức tạp hơn để nhập mã. Định dạng thứ hai này cũng bao gồm từ khóa
import mymodule
0from mypackage import mymodule
Ở định dạng này, bạn chỉ định cả mô-đun hoặc mã bạn muốn cùng với vị trí của nó. Bạn đặt tên mã, mô-đun hoặc gói con của bạn cho
import mymodule
1 và vị trí của nó cho import mymodule
2. Một câu lệnh nhập như vậy là tuyệt vời nếu bạn chỉ muốn nhập một số mã từ gói được đề cập chứ không phải chính gói đóBạn thậm chí có thể đổi tên mô-đun bằng cách bao gồm từ khóa
import mymodule
3import mymodule as oMyFunction
Bạn cũng có thể sử dụng dấu hoa thị [
import mymodule
4] làm ký tự đại diện. Câu lệnh sau sẽ nhập mọi chức năng và thuộc tính có trong gói import math
myPi = math.pi
print myPi
2from math import *
Bất kể cú pháp là gì, bạn phải luôn tuân theo khuyến nghị
nhập khẩu tuyệt đối
Nhập tuyệt đối bao gồm toàn bộ đường dẫn đến tập lệnh của bạn, bắt đầu từ thư mục gốc của chương trình. Mặc dù bạn phải tách từng thư mục theo một khoảng thời gian, nhưng bạn có thể có nó miễn là bạn cần
Sau đây là các ví dụ về nhập khẩu tuyệt đối
from package1.firstmodule import firstmodule
import package1.secondmodule.myfunction
Nhập khẩu tuyệt đối Ưu điểm và nhược điểmKhông giống như các ngôn ngữ khác, hầu hết các nhà phát triển Python thích sử dụng nhập khẩu tuyệt đối hơn so với anh em họ hàng của họ. Điều này là do nhập khẩu tuyệt đối làm cho nó thực sự rõ ràng những gì bạn đang cố gắng làm. Vị trí thực tế của các tệp của bạn nằm ngay trong mã của bạn. Trên thực tế, bạn có thể sử dụng chúng ở bất kỳ đâu trong mã của mình. Họ sẽ chỉ làm việc
Tuy nhiên, nhập khẩu tuyệt đối có thể khá lâu. Nếu dự án của bạn có các gói con trong các gói con trong các gói con, câu lệnh nhập của bạn có thể mở rộng ra ngoài một dòng mã. Khi điều đó xảy ra, tốt hơn hết là bạn nên sử dụng nhập khẩu tương đối
Bạn cũng có thể phát hiện ra sự cố khi khởi động chương trình của mình bằng các tệp khởi động khác nhau. Trình thông dịch Python chỉ khai báo thư mục hiện tại của tệp bắt đầu là thư mục gốc gói
import mymodule
6 của nó. Điều này tốt nếu bạn chỉ tải chương trình của mình bằng các tệp từ thư mục gốc. Điều này là do import mymodule
6 sẽ tĩnh trong suốt tập lệnh của bạnTuy nhiên, tình hình sẽ thay đổi khi bạn bắt đầu chương trình của mình từ một thư mục con hoặc trong bất kỳ tình huống nào khác mà
import mymodule
6 của bạn có thể thay đổi. Sau đó, "thư mục gốc" của bạn là thư mục con. Bởi vì bạn không thể sử dụng nhập ẩn [như chúng ta sẽ thấy bên dưới], bất kỳ tệp nào bên ngoài thư mục con sẽ không thể truy cập được vào chương trình của bạnHãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Bạn có hai cách giải quyết cho việc này. Bạn có thể bắt đầu tập lệnh thư mục con của mình dưới dạng mô-đun đã nhập hoặc bạn có thể thêm trực tiếp
import mymodule
6 vào mã của mìnhVí dụ
- Nhập mô-đun dưới dạng thời gian chạy.
0from mypackage import mymodule
- nối thêm hệ thống. đường dẫn trước khi nhập tệp của bạn
import os, sys
sys.path.append[os.path.dirname[os.path.dirname[os.path.realpath[__file__]]]]
from packA.subA import sa2
Nhập khẩu tương đối
Với nhập tương đối, bạn chỉ xác định vị trí tài nguyên của mình có liên quan đến tệp mã hiện tại. Bạn có thể thực hiện việc này một cách ngầm định hoặc rõ ràng, mặc dù việc nhập tương đối ngầm định đã bị xóa trong Python 3
Đối với cú pháp, nhập tương đối sử dụng ký hiệu dấu chấm. Các dấu chấm đơn đại diện cho thư mục của tập lệnh hiện tại. Hai dấu chấm đại diện cho thư mục mẹ. Ba chấm có nghĩa là ông bà, v.v. Bạn có thể quen thuộc với hệ thống này nếu bạn sử dụng hệ điều hành giống UNIX hoặc bảng điều khiển Windows
Sau đây là các ví dụ về nhập khẩu tương đối
import other
from . import some_class
from .subA import sa1
from .some_module import some_class
import some_function
import subA.sa1
Nhập khẩu tương đối và ưu điểm và nhược điểm của chúngNhập khẩu tương đối hiếm khi tăng chừng nào nhập khẩu tuyệt đối. Họ thậm chí có thể biến một tuyên bố tuyệt đối dài đến nực cười thành một thứ đơn giản như
import math
myPi = math.pi
print myPi
0Tuy nhiên, chúng cũng ẩn đường dẫn đến các mô-đun của bạn. Điều này có thể ổn nếu bạn là nhà phát triển duy nhất, nhưng sẽ lộn xộn nếu bạn là thành viên của nhóm phát triển nơi cấu trúc thư mục thực tế có thể thay đổi
Nhập khẩu nào để sử dụng?
Trừ khi bạn đang làm việc trên một dự án lớn với nhiều lớp gói phụ, bạn nên luôn sử dụng nhập khẩu tuyệt đối. Bằng cách đó, mã của bạn sẽ dễ dàng được hiểu bởi bất kỳ ai nhìn vào mã đó, kể cả chính bạn nếu bạn quay lại mã để cập nhật sau. Ngay cả khi bạn có những con đường dài, bạn vẫn nên cố gắng viết chương trình của mình để chỉ sử dụng các câu lệnh tuyệt đối để đơn giản hóa mã và cuộc sống của bạn
Phần kết luận
Giống như bất kỳ ngôn ngữ lập trình hiện đại nào khác, Python cho phép bạn nhập mã từ các tệp hoặc mô-đun khác. Tuy nhiên, điều này có thể dẫn đến một quy trình khó hiểu và dễ xảy ra lỗi, trừ khi bạn hiểu các khái niệm đằng sau hệ thống nhập
Trong bài viết này, chúng ta đã xem xét các cách khác nhau để nhập mã vào chương trình Python của mình, bao gồm nhập tuyệt đối và tương đối. Chúng tôi cũng so sánh ưu và nhược điểm của từng loại, chúng có lợi thế trong các trường hợp sử dụng khác nhau