2012-01-25 29 views
5

Khi viết kịch bản cho mục đích cá nhân, tôi đang sử dụng để làm điều này:Hai biến thể của chức năng chính của Python

def do_something(): 
    # Do something. 

if __name__ == '__main__': 
    do_something() 

Hoặc, chúng tôi cũng có thể làm điều này:

def do_something(): 
    # Do something. 

do_something()  # No if __name__ thingy. 

Tôi biết các hình thức đầu tiên là hữu ích khi phân biệt giữa việc nhập tập lệnh dưới dạng mô-đun hoặc gọi trực tiếp, nhưng nếu không đối với các tập lệnh sẽ chỉ được thực hiện (và không bao giờ được nhập), có lý do nào để chọn tập lệnh này qua cái kia không?

Trả lời

17

Thậm chí nếu tập lệnh chỉ có nghĩa là được thực thi, đôi khi có thể hữu ích khi nhập tập lệnh - trong trình bao tương tác, bằng công cụ tạo tài liệu, trong kiểm tra đơn vị hoặc để thực hiện định thời gian. Vì vậy, thường xuyên sử dụng hình thức tổng quát hơn sẽ không bao giờ bị tổn thương.

+0

Cảm ơn, đó có vẻ là lý do tốt để theo dõi trước đây. –

4

Biểu mẫu đầu tiên chỉ là thực hành tốt. Một trong những luật không thể thay đổi của việc viết chương trình máy tính là ai đó trong tương lai xa (như ngay sau khi bạn được giao cho một dự án khác hoặc bỏ hoặc chán với việc duy trì mã) sẽ muốn sử dụng tập lệnh "luôn độc lập" hoặc một phần của nó, cho một số mục đích khác.

Nếu chúng tôi cho rằng bạn hoàn toàn là lập trình viên ngôi sao nhạc rock và mọi nhân vật trong tệp nguồn của bạn đều bão hòa với thiên tài (đúng không?), Có nghĩa là ai đó sẽ nhận được tác phẩm nghệ thuật của bạn chỉ đơn giản là bị đập xuống sàn nhà bởi sự sáng chói của bạn và sẽ muốn sử dụng nó.

Giờ đây, bạn có thể chọn cắt mã của mình thành tệp có tên của chúng ở trên cùng, rất không rõ ràng và đóng góp cho tâm trí phi thường của bạn được ghi nhận cho người khác hoặc bạn chỉ cần thêm bit mã đó và cho phép họ nhập mô-đun của bạn và trực tiếp sử dụng lớp hoặc chức năng khiến họ nhận ra chúng rất, rất ít họ thực sự biết về lập trình trước khi họ gặp phải.

Lựa chọn của bạn!

+0

Và, như Sven đã nói, thử nghiệm! –

+0

Đúng vậy, cảm ơn bạn đã xem. –

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