2014-11-07 14 views
5

Tôi đọc here về sắp xếp các câu lệnh import bằng Python, nhưng nếu điều bạn đang nhập cần các phụ thuộc chưa được nhập? Đây có phải là sự khác biệt giữa các ngôn ngữ được biên dịch và được diễn giải không? Tôi đến từ một nền JavaScript và thứ tự mà bạn tải kịch bản của bạn quan trọng, trong khi Python dường như không quan tâm. Cảm ơn.Có phải vấn đề thứ tự nhập khẩu của Python

+0

Vì vậy, điều này đúng với phương pháp nhập? Giống như: 'từ x nhập xx' – Dusty

Trả lời

5

Không, không, bởi vì mỗi mô-đun python phải được tự chứa và nhập mọi thứ cần thiết. Điều này đúng với việc nhập toàn bộ mô-đun và chỉ các phần cụ thể của nó.

13

Thứ tự nhập không quan trọng. Nếu một mô-đun dựa vào các mô-đun khác, nó cần phải nhập chúng. Python xử lý mỗi tệp .py dưới dạng đơn vị độc lập theo như những gì có thể nhìn thấy trong tệp đó.

(Về mặt kỹ thuật, thay đổi thứ tự nhập có thể thay đổi hành vi, vì mô-đun có thể có mã khởi chạy chạy khi được nhập lần đầu tiên. Nếu mã khởi tạo đó có thể có các mô-đun để tương tác với nhau. sẽ là một lỗ hổng thiết kế trong các mô-đun đó. Thứ tự nhập không phải là vấn đề, vì vậy mã khởi tạo cũng phải được viết thành không phụ thuộc vào bất kỳ thứ tự cụ thể nào.)

+0

+1 cho bản in nhỏ. –

+1

Nếu một người sử dụng (không được khuyến nghị) 'từ gói nhập *' mô hình, người ta cũng có thể ghi đè lên các định nghĩa. Ví dụ này xảy ra với 'from math import *' và 'from numpy import *'. –

+1

Thứ tự nhập có thể quan trọng nếu hành vi '__init__' của mô-đun có tác dụng phụ. Ví dụ, nhập khẩu TensorFlow sẽ tiêu thụ tổng số bộ nhớ GPU có sẵn. Nếu bạn cố gắng nhập khẩu Caffe sau khi nhập TensorFlow, Caffe sẽ không thể yêu cầu bất kỳ tài nguyên bộ nhớ nào từ GPU (s). Có thể có những thứ đơn giản hơn với các mô đun mở rộng xác định cài đặt xung đột hoặc đặt khóa trên tệp. "Nhập" chỉ có nghĩa là "thực thi một số mã". Điều này rất phổ biến trong các thư viện được sử dụng rộng rãi, không hữu ích khi nói rằng lệnh nhập không quan trọng vì các tác dụng phụ khi nhập khẩu là một thực hành không tốt. – ely

1

Thứ tự nhập lệnh Python không quan trọng khi bạn đang nhập thư viện python chuẩn/modules. Tuy nhiên, thứ tự quan trọng đối với các ứng dụng cục bộ/thư viện nhập khẩu cụ thể của bạn vì bạn có thể bị mắc kẹt trong vòng lặp phụ thuộc vòng tròn, vì vậy hãy xem xét trước khi nhập.

Các vấn đề liên quan