2010-09-28 32 views
25

Bản sao có thể xảy ra:
Terminating a Python script
Terminating a Python ProgramPython làm thế nào để thoát khỏi chức năng chính

Câu hỏi của tôi là làm thế nào để thoát ra khỏi chức năng chính Python? Tôi đã thử 'return' nhưng nó đã đưa ra lỗi SyntaxError: 'return' outside function. Có ai giúp được không? Cảm ơn.

if __name__ == '__main__': 
    try: 
    if condition: 
    (I want to exit here) 
    do something 
    finally: 
    do something 
+1

Khi bạn đã tìm kiếm những gì bạn đã tìm thấy? http://stackoverflow.com/search?q=%5Bpython%5D+exit. Tất cả những thứ này dường như có điểm chung. –

+2

Tôi nghĩ mọi người đã bỏ lỡ điểm của câu hỏi này. OP không tìm cách chung để chấm dứt một chương trình. Anh ta muốn biết tại sao, trong trường hợp này, 'return' không hoạt động cho mục đích đó. – nobar

+0

Câu trả lời này cho câu hỏi có liên quan có vẻ hữu ích nhất ở đây http://stackoverflow.com/a/953385/86967. – nobar

Trả lời

55

Bạn có thể sử dụng sys.exit() để thoát khỏi giữa chức năng chính.

Tuy nhiên, tôi khuyên bạn không nên thực hiện bất kỳ logic nào ở đó. Thay vào đó, hãy đặt mọi thứ vào một hàm và gọi từ __main__ - sau đó bạn có thể sử dụng trở lại như bình thường.

+6

+1 để thêm chức năng 'mọi thứ' rõ ràng. Điều này cũng làm cho nó dễ dàng hơn để (1) gọi kịch bản này từ các kịch bản khác (2) kiểm tra đơn vị. –

+5

Guido van Rossum hỗ trợ (hoặc ít nhất, được sử dụng để) cách tiếp cận này: http://www.artima.com/weblogs/viewpost.jsp?thread=4829 – ide

+0

Tôi thường tạo một hàm có tên là "chính" và đặt nó ở đầu tệp. –

2

sử dụng mô-đun sys

import sys 
sys.exit() 
16

Bạn không thể quay lại vì bạn không có chức năng. Tuy nhiên, bạn có thể exit.

import sys 
sys.exit(0) 

0 (mặc định) có nghĩa là thành công, khác không có nghĩa là không thành công.

+1

Tại sao 'sys.exit()' thay vì chỉ đơn giản là 'exit()'? –

+1

Tại sao không? Ngoài ra, Python cố gắng không cung cấp nhiều chức năng tích hợp hơn là cần thiết. –

+2

@Chỉ cần, [tài liệu] (http://docs.python.org/library/constants.html#exit) nói không sử dụng đồng bằng 'thoát' trong các chương trình và có thể được cho là [lỗi] (http: // bugs.python.org/issue8220) (mặc dù WONTFIX) mà bạn thậm chí có thể. –

8

Nếu bạn không cảm thấy như nhập khẩu bất cứ điều gì, bạn có thể thử:

raise SystemExit, 0 
+0

Điều này có thể bị bắt nếu ai đó muốn mở rộng chính và không thoát ra ở cuối của nó? – ThorSummoner

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