2012-03-12 40 views
5

Tôi nhận thấy nhiều lần rằng nhập khẩu mod tuyên bố có thể được đặt chặt chẽ trước khi gọi mod.something(). Mặc dù tôi nhận thấy rằng các nhà phát triển thường đặt câu lệnh nhập vào đầu tệp nguồn. Có lý do chính đáng cho việc này không?Nơi nhập khẩu tuyên bố

Tôi thường chỉ sử dụng một vài chức năng từ một số mô-đun ở vị trí cụ thể. Nó có vẻ đẹp hơn với tôi để đặt báo cáo nhập khẩu chặt chẽ trước khi gọi hàm.

ví dụ:

# middle of the source file 
import mod 
mod.something() 

Bạn sẽ giới thiệu gì và tại sao?

+8

Hướng dẫn kiểu PEP yêu cầu tất cả các lần nhập sẽ diễn ra vào đầu mô-đun. Điều này giúp mọi người dễ dàng biết phụ thuộc của mô-đun của bạn hơn là phải tìm hiểu toàn bộ tài liệu nguồn. –

+2

Xem phần "Nhập khẩu" trong [PEP 8] (http://www.python.org/dev/peps/pep-0008/). Đây là một câu hỏi về phong cách, vì vậy hãy tự do làm những gì hữu ích nhất cho bạn, nhưng hãy nhớ rằng những người khác làm việc với mã của bạn có thể mong đợi việc nhập khẩu lên phía trước. (Bỏ phiếu để đóng vì tôi không nghĩ rằng có một câu trả lời thực sự cho câu hỏi này.) –

+0

OK. Tôi hiểu nó, có nhiều lý do cho cả hai phong cách. Tôi thích nhiều hơn khi tôi không có một loạt các hàng nhập khẩu lúc đầu, nhưng lý do để không làm điều đó là lý do chính đáng. – xralf

Trả lời

6

Một điều có thể biện minh cho việc nhập mô-đun ngay trước khi gọi hàm/sử dụng một lớp từ mô-đun đó là hiệu suất: đôi khi khởi tạo mô-đun có thể tốn kém, bởi vì, ví dụ, nó liên quan đến việc tải và khởi tạo một thư viện gốc. Nếu mã từ một mô-đun không phải lúc nào cũng được gọi, có thể là một ý tưởng tốt để trì hoãn việc nhập mô-đun đó cho đến giây phút cuối cùng.

+1

Lý do chính đáng. Trên thực tế tôi đang sử dụng một chức năng thực sự từ một vài mô-đun và như thế này thay vì làm lộn xộn đầu với việc nhập nhiều người trợ giúp nhỏ – xralf

5

Cũng có thể di chuyển nhận xét của tôi ở đây dưới dạng câu trả lời, mặc dù nó cảm thấy một chút dư thừa.

Hướng dẫn kiểu PEP yêu cầu tất cả các lần nhập diễn ra vào đầu mô-đun. Điều này giúp mọi người dễ dàng biết phụ thuộc của mô-đun của bạn hơn là phải tìm hiểu toàn bộ tài liệu nguồn.

Để báo trước - trong trường hợp hiếm hoi, việc nhập sẽ gây ra lỗi (nhập vòng tròn là ví dụ tốt nhất) bạn có thể nhập ngay trước khi sử dụng một số chức năng. Nói chung, tuy nhiên, đây là hình thức xấu. Nếu bạn được yêu cầu nhập một nơi nào đó ngoài phần đầu của mô-đun, nó thường chỉ ra một lỗi thiết kế.

+0

Câu trả lời của bạn là hữu ích và làm cho kết quả hoàn chỉnh hơn, cảm ơn. – xralf