2009-09-07 27 views
17

Câu hỏi khá đơn giản nhưng không được trả lời bằng cách tìm kiếm. Làm cách nào để xác định trong tập lệnh python cho dù tập lệnh này được nhập dưới dạng mô-đun hay chạy dưới dạng tập lệnh? Có một sự khác biệt ở tất cả trong python?làm cách nào để xác định xem tập lệnh python được nhập dưới dạng mô-đun hay chạy dưới dạng tập lệnh?

Vấn đề là, tôi muốn đánh giá các thông số dòng lệnh chỉ khi chạy dưới dạng tập lệnh, nhưng không phải nếu mô-đun chỉ được nhập để sử dụng nó trong tập lệnh khác. (Tôi muốn có thể sử dụng một kịch bản như cả thư viện và chương trình.) Tôi sợ cách vani sẽ là xây dựng thư viện lib và tập lệnh thứ hai sử dụng nó, nhưng tôi muốn có tùy chọn thứ hai cho công cụ nhỏ/libs.

Trả lời

29

từ python docs:

Khi bạn chạy một mô-đun Python với

python fibo.py

mã trong các mô-đun sẽ được thực hiện, cũng giống như khi bạn nhập nó, nhưng với __name__ được đặt thành "__main__". Điều đó có nghĩa rằng bằng cách thêm mã này vào cuối của module của bạn:

if __name__ == '__main__': 
    # Running as a script 

bạn có thể làm cho các tập tin có thể sử dụng như một kịch bản cũng như một module có thể nhập cảng, bởi vì mã mà phân tích các dòng lệnh chỉ chạy nếu mô-đun được thực thi dưới dạng tệp “chính”

+3

thì có vẻ hơi kỳ diệu nhưng thực sự là một thành ngữ hoàn toàn tiêu chuẩn. Bạn cũng sẽ là \ _ \ _ main \ _ \ _ nếu bạn là một mô-đun được gọi bởi 'python -m somemodule'. – bobince

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