2012-05-05 30 views
6

Tôi là một lập trình viên Java và tôi luôn tạo các tệp riêng biệt cho Lớp học, tôi đang cố gắng tìm hiểu python và tôi muốn tìm hiểu nó đúng. Có tốn kém trong python để đặt Lớp học trong các tệp khác nhau, nghĩa là một tệp chỉ chứa một lớp. Tôi đọc trong một blog rằng nó là tốn kém bởi vì độ phân giải của nhà điều hành . xảy ra tại thời gian chạy trong python (Nó xảy ra tại thời gian biên dịch cho Java).Có tốn kém trong Python để đưa các lớp vào các tệp khác nhau không?

Note: Tôi đã đọc trong bài viết khác mà chúng ta có thể đặt chúng trong tập tin riêng biệt nhưng họ không đề cập đến nếu họ là tốn kém hơn trong bất kỳ cách nào

Trả lời

8

Nó là hơi tốn kém, nhưng không đến mức độ bạn có thể quan tâm. Bạn có thể từ chối chi phí bổ sung này bằng cách thực hiện:

from module import Class 

Khi đó lớp sẽ được gán cho một biến trong không gian tên cục bộ, nghĩa là nó không phải tra cứu thông qua mô-đun.

Trong thực tế, tuy nhiên, điều này có vẻ không quan trọng. Chi phí tìm kiếm một cái gì đó như thế này sẽ là rất nhỏ, và bạn nên tập trung vào làm những gì làm cho mã của bạn dễ đọc nhất. Phân chia các lớp trên các mô-đun và các gói như là hợp lý cho chương trình của bạn, và vì nó giữ chúng rõ ràng.

Nếu, ví dụ, bạn đang sử dụng một cái gì đó lặp đi lặp lại trong một vòng lặp mà là một nút cổ chai cho chương trình của bạn, bạn có thể assign it to a local variable for that loop, ví dụ:

import module 

... 

some_important_thing = module.some_important_thing 

#Bottleneck loop 
for item in items: 
    #module.some_important_thing() 
    some_important_thing() 

Lưu ý rằng loại tối ưu hóa là khó có khả năng là quan trọng và bạn chỉ nên tối ưu hóa nơi bạn có bằng chứng bạn cần làm như vậy.

+2

Tôi nghĩ rằng chán nản là một thuật ngữ mạnh mẽ. Nói chung, bạn nên nhập thông thường để không làm lộn xộn không gian tên của mình. Tuy nhiên, trong một số trường hợp, nếu bạn đang sử dụng một thứ được nhập khẩu rất nhiều trong suốt mã của bạn, sẽ không có gì sai khi sử dụng kiểu nhập này. –

+0

Đó là một tính năng tuyệt vời để lưu trữ tên lớp với mô-đun trong một biến, điều đó sẽ cải thiện hiệu suất của mã của tôi –

+0

@Lattyware Đã xóa nhận xét của tôi vì bạn đã đề cập ý nghĩa của mình trong chỉnh sửa của mình. – jamylak

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