Nhập tệp Python từ cùng thư mục
Nếu bạn đã từng làm việc trên một dự án Python có nhiều tệp, rất có thể bạn đã phải sử dụng câu lệnh nhập trước đây Show
Ngay cả đối với Pythonistas với một vài dự án trong vành đai của họ, việc nhập khẩu có thể gây nhầm lẫn. Có thể bạn đang đọc bài này vì bạn muốn hiểu sâu hơn về nhập khẩu trong Python, đặc biệt là nhập khẩu tuyệt đối và tương đối Trong hướng dẫn này, bạn sẽ tìm hiểu sự khác biệt giữa hai loại này, cũng như ưu và nhược điểm của chúng. Hãy đi sâu vào ngay Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới Tóm tắt nhanh về nhập khẩuBạn cần hiểu rõ về các mô-đun và gói Python để biết cách nhập hoạt động. Mô-đun Python là một tệp có phần mở rộng 3 và gói Python là bất kỳ thư mục nào có các mô-đun bên trong nó (hoặc, trong Python 2, một thư mục chứa tệp 4)Điều gì xảy ra khi bạn có mã trong một mô-đun cần truy cập mã trong mô-đun hoặc gói khác? Loại bỏ các quảng cáoNhập khẩu hoạt động như thế nàoNhưng chính xác thì nhập khẩu hoạt động như thế nào?
Điều đầu tiên Python sẽ làm là tra cứu tên 5 trong. Đây là bộ đệm của tất cả các mô-đun đã được nhập trước đóNếu tên không được tìm thấy trong bộ đệm mô-đun, Python sẽ tiến hành tìm kiếm thông qua danh sách các mô-đun tích hợp. Đây là những mô-đun được cài đặt sẵn với Python và có thể tìm thấy trong Thư viện chuẩn Python. Nếu tên vẫn không được tìm thấy trong các mô-đun tích hợp, thì Python sẽ tìm kiếm nó trong danh sách các thư mục được xác định bởi. Danh sách này thường bao gồm thư mục hiện tại, được tìm kiếm đầu tiên Khi Python tìm thấy mô-đun, nó sẽ liên kết nó với một tên trong phạm vi cục bộ. Điều này có nghĩa là 5 hiện đã được xác định và có thể được sử dụng trong tệp hiện tại mà không cần ném 0Nếu tên không bao giờ được tìm thấy, bạn sẽ nhận được một 1. Bạn có thể tìm hiểu thêm về nhập trong tài liệu Python tại đâyGhi chú. Mối quan tâm về an ninh Xin lưu ý rằng hệ thống nhập của Python có một số rủi ro bảo mật đáng kể. Điều này phần lớn là do tính linh hoạt của nó. Ví dụ: bộ đệm mô-đun có thể ghi được và có thể ghi đè chức năng Python cốt lõi bằng hệ thống nhập. Việc nhập từ các gói của bên thứ ba cũng có thể khiến ứng dụng của bạn gặp phải các mối đe dọa bảo mật Dưới đây là một số tài nguyên thú vị để tìm hiểu thêm về những lo ngại về bảo mật này và cách giảm thiểu chúng
Cú pháp báo cáo nhập khẩuBây giờ bạn đã biết cách hoạt động của câu lệnh nhập, hãy khám phá cú pháp của chúng. Bạn có thể nhập cả gói và mô-đun. (Lưu ý rằng việc nhập gói về cơ bản sẽ nhập tệp 4 của gói dưới dạng mô-đun. ) Bạn cũng có thể nhập các đối tượng cụ thể từ gói hoặc mô-đunNói chung có hai loại cú pháp nhập khẩu. Khi bạn sử dụng cái đầu tiên, bạn nhập tài nguyên trực tiếp, như thế này
5 có thể là một gói hoặc một mô-đunKhi bạn sử dụng cú pháp thứ hai, bạn nhập tài nguyên từ gói hoặc mô-đun khác. Đây là một ví dụ
4 có thể là một mô-đun, gói con hoặc đối tượng, chẳng hạn như một lớp hoặc hàmBạn cũng có thể chọn đổi tên tài nguyên đã nhập, như vậy
Điều này đổi tên tài nguyên đã nhập 5 thành 6 trong tập lệnh. Bây giờ nó phải được tham chiếu là 6, nếu không nó sẽ không được công nhậnKiểu dáng của báo cáo nhập khẩu, hướng dẫn phong cách chính thức cho Python, có một số gợi ý khi viết câu lệnh nhập. Đây là một bản tóm tắt
Bạn cũng nên sắp xếp hàng nhập của mình theo thứ tự bảng chữ cái trong mỗi nhóm nhập. Điều này làm cho việc tìm kiếm các mục nhập cụ thể dễ dàng hơn nhiều, đặc biệt là khi có nhiều mục nhập trong một tệp Đây là một ví dụ về cách định kiểu câu lệnh nhập
Các câu lệnh nhập ở trên được chia thành ba nhóm riêng biệt, được phân tách bằng khoảng trống. Chúng cũng được sắp xếp theo thứ tự bảng chữ cái trong mỗi nhóm Loại bỏ các quảng cáonhập khẩu tuyệt đốiBạn đã bắt kịp tốc độ viết câu lệnh nhập và cách tạo kiểu cho chúng như một người chuyên nghiệp. Bây giờ là lúc để tìm hiểu thêm một chút về nhập khẩu tuyệt đối Nhập tuyệt đối chỉ định tài nguyên sẽ được nhập bằng đường dẫn đầy đủ của nó từ thư mục gốc của dự án Cú pháp và ví dụ thực tếGiả sử bạn có cấu trúc thư mục sau
Có một thư mục, 8, chứa hai thư mục con, 9 và 0. Thư mục 9 có hai tệp, 2 và 3Thư mục 0 có ba tệp. hai mô-đun, 5 và 6, và một tệp khởi tạo, 4. Nó cũng chứa một thư mục, 8, đến lượt thư mục này lại chứa một tệp, 9Hãy giả sử như sau
Sau đây là những ví dụ thực tế về nhập khẩu tuyệt đối
Lưu ý rằng bạn phải cung cấp đường dẫn chi tiết cho từng gói hoặc tệp, từ thư mục gói cấp cao nhất. Điều này hơi giống với đường dẫn tệp của nó, nhưng chúng tôi sử dụng dấu chấm ( 6) thay vì dấu gạch chéo ( 7)Ưu và nhược điểm của nhập khẩu tuyệt đốiNhập khẩu tuyệt đối được ưa thích hơn vì chúng khá rõ ràng và đơn giản. Thật dễ dàng để biết chính xác tài nguyên đã nhập ở đâu, chỉ bằng cách nhìn vào câu lệnh. Ngoài ra, nhập tuyệt đối vẫn hợp lệ ngay cả khi vị trí hiện tại của câu lệnh nhập thay đổi. Trên thực tế, PEP 8 khuyến nghị rõ ràng việc nhập khẩu tuyệt đối Tuy nhiên, đôi khi, việc nhập tuyệt đối có thể khá dài dòng, tùy thuộc vào độ phức tạp của cấu trúc thư mục. Hãy tưởng tượng có một tuyên bố như thế này
Điều đó thật lố bịch, phải không? Nhập khẩu tương đốiNhập tương đối chỉ định tài nguyên được nhập tương ứng với vị trí hiện tại—nghĩa là vị trí có câu lệnh nhập. Có hai loại nhập khẩu tương đối. ngầm định và rõ ràng. Nhập ẩn tương đối không được dùng trong Python 3, vì vậy tôi sẽ không đề cập đến chúng ở đây Loại bỏ các quảng cáoCú pháp và ví dụ thực tếCú pháp của một lần nhập tương đối phụ thuộc vào vị trí hiện tại cũng như vị trí của mô-đun, gói hoặc đối tượng được nhập. Dưới đây là một vài ví dụ về nhập khẩu tương đối
Bạn có thể thấy rằng có ít nhất một dấu chấm trong mỗi câu lệnh nhập ở trên. Nhập khẩu tương đối sử dụng ký hiệu dấu chấm để chỉ định vị trí Một dấu chấm đơn có nghĩa là mô-đun hoặc gói được tham chiếu nằm trong cùng thư mục với vị trí hiện tại. Hai dấu chấm có nghĩa là nó nằm trong thư mục mẹ của vị trí hiện tại—tức là thư mục ở trên. Ba dấu chấm có nghĩa là nó nằm trong thư mục ông bà, v.v. Điều này có thể sẽ quen thuộc với bạn nếu bạn sử dụng hệ điều hành giống Unix Giả sử bạn có cùng cấu trúc thư mục như trước
Nhớ lại nội dung tập tin
Bạn có thể nhập 1 vào tệp 5 theo cách này 0Bạn chỉ sử dụng một dấu chấm ở đây vì 3 nằm trong cùng thư mục với mô-đun hiện tại, đó là 2Bạn có thể nhập 3 và 5 vào tệp 0 theo cách này 1Trong câu lệnh nhập đầu tiên, dấu chấm đơn có nghĩa là bạn đang nhập 3 từ gói hiện tại. Hãy nhớ rằng việc nhập gói về cơ bản sẽ nhập tệp 4 của gói dưới dạng mô-đunTrong câu lệnh nhập thứ hai, bạn sẽ sử dụng lại một dấu chấm vì 3 nằm trong cùng thư mục với mô-đun hiện tại, đó là 5Ưu và nhược điểm của nhập khẩu tương đốiMột lợi thế rõ ràng của nhập khẩu tương đối là chúng khá ngắn gọn. Tùy thuộc vào vị trí hiện tại, họ có thể biến câu lệnh nhập dài lố bịch mà bạn đã thấy trước đó thành một thứ đơn giản như thế này 2Thật không may, quá trình nhập tương đối có thể lộn xộn, đặc biệt đối với các dự án được chia sẻ khi cấu trúc thư mục có thể thay đổi. Các lần nhập tương đối cũng không thể đọc được như các lần nhập tuyệt đối và không dễ để biết vị trí của các tài nguyên đã nhập Loại bỏ các quảng cáoPhần kết luậnBạn đã hoàn thành tốt khóa học cấp tốc về nhập tuyệt đối và tương đối này. Bây giờ, bạn đã bắt kịp tốc độ hoạt động của tính năng nhập. Bạn đã học các phương pháp hay nhất để viết câu lệnh nhập và bạn biết sự khác biệt giữa nhập tuyệt đối và nhập tương đối Với các kỹ năng mới của mình, bạn có thể tự tin nhập các gói và mô-đun từ thư viện chuẩn Python, gói của bên thứ ba và gói cục bộ của riêng bạn. Hãy nhớ rằng bạn thường nên chọn nhập tuyệt đối thay vì nhập tương đối, trừ khi đường dẫn phức tạp và sẽ khiến câu lệnh quá dài Cảm ơn vì đã đọc Đánh dấu là đã hoàn thành Xem ngay Hướng dẫn này có một khóa học video liên quan do nhóm Real Python tạo. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn. Nhập tuyệt đối và tương đối trong Python 🐍 Thủ thuật Python 💌 Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python Gửi cho tôi thủ thuật Python » Giới thiệu về Mbithe Nzomo Tôi là một kỹ sư phần mềm có kinh nghiệm, quan tâm đến trí tuệ nhân tạo và máy học. Tôi hiện đang là sinh viên sau đại học tại Đại học Manchester, theo học Khoa học Máy tính Nâng cao với chuyên ngành AI » Tìm hiểu thêm về MbitheMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là Adriana David Joanna Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Chuyên gia Kỹ năng Python trong thế giới thực Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia Nâng cao kỹ năng Python của bạn » Bạn nghĩ sao? Đánh giá bài viết này Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì? Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi Làm cách nào để nhập các hàm từ một tệp Python khác trong cùng thư mục?Nhớ file chứa định nghĩa hàm và file gọi hàm phải cùng thư mục. Để sử dụng các hàm được viết trong một tệp bên trong một tệp khác hãy bao gồm dòng nhập, from filename import function_name . Lưu ý rằng mặc dù tên tệp phải chứa một. phần mở rộng py,.
Điều gì xảy ra nếu tôi nhập cùng một mô-đun hai lần Python?Điều gì xảy ra nếu một mô-đun được nhập hai lần? . there is no performance loss by importing it again.
Làm cách nào để nhập lớp từ tệp này sang tệp khác trong Python?Các mô-đun Python có thể truy cập mã từ một mô-đun khác bằng cách nhập tệp/hàm bằng cách nhập. Câu lệnh nhập khẩu là cách phổ biến nhất để gọi máy móc nhập khẩu, nhưng đó không phải là cách duy nhất. Câu lệnh nhập bao gồm từ khóa nhập cùng với tên của mô-đun |