Hướng dẫn dùng python systemexit python

Có vẻ như python hỗ trợ nhiều lệnh khác nhau để dừng thực thi tập lệnh.
Các lựa chọn Tôi đã tìm thấy là: quit(), exit(), sys.exit(),os._exit()

Tôi đã bỏ lỡ bất kỳ? Sự khác biệt giữa chúng là gì? Khi nào bạn sẽ sử dụng từng?

  • python

369 hữu ích 0 bình luận 479k xem chia sẻ

answer

629

Hướng dẫn dùng python systemexit python

Hãy để tôi cung cấp một số thông tin về họ:

  1. quitlàm tăng SystemExitngoại lệ đằng sau hậu trường.

    Hơn nữa, nếu bạn in nó, nó sẽ đưa ra một thông báo:

    >>> print (quit)
    Use quit() or Ctrl-Z plus Return to exit
    >>>

    Chức năng này được bao gồm để giúp những người không biết Python. Rốt cuộc, một trong những điều rất có thể một người mới sẽ cố gắng thoát khỏi Python đang gõ vào quit.

    Tuy nhiên, khôngquit nên được sử dụng trong mã sản xuất. Điều này là do nó chỉ hoạt động nếu mô-đun được tải. Thay vào đó, chức năng này chỉ nên được sử dụng trong trình thông dịch.site

  2. exitlà một bí danh cho quit(hoặc ngược lại). Chúng tồn tại cùng nhau chỉ đơn giản là làm cho Python thân thiện hơn với người dùng.

    Hơn nữa, nó cũng đưa ra một thông điệp khi được in:

    >>> print (exit)
    Use exit() or Ctrl-Z plus Return to exit
    >>>

    Tuy nhiên, như quit, exitđược coi là xấu khi sử dụng trong mã sản xuất và nên được dành riêng để sử dụng trong trình thông dịch. Điều này là do nó quá phụ thuộc vào các sitemô-đun.

  3. sys.exitlàm tăng SystemExitngoại lệ trong nền. Điều này có nghĩa là nó giống như quitexittrong khía cạnh đó.

    Tuy nhiên, không giống như hai cái đó, sys.exitđược coi là tốt để sử dụng trong mã sản xuất. Điều này là do các sysmô-đun sẽ luôn ở đó.

  4. os._exitthoát khỏi chương trình mà không gọi xử lý dọn dẹp, đỏ bừng bộ đệm stdio, vv . Vì vậy, nó không phải là một cách tiêu chuẩn để thoát ra và chỉ nên được sử dụng trong những trường hợp đặc biệt. Phổ biến nhất trong số này là trong quá trình con được tạo bởi os.fork.

    Lưu ý rằng, trong bốn phương thức được đưa ra, chỉ có phương pháp này là duy nhất trong những gì nó làm.

Tổng kết, cả bốn phương thức thoát khỏi chương trình. Tuy nhiên, hai cái đầu tiên được coi là xấu khi sử dụng trong mã sản xuất và cái cuối cùng là một cách không chuẩn, bẩn chỉ được sử dụng trong các tình huống đặc biệt. Vì vậy, nếu bạn muốn thoát một chương trình bình thường, hãy thực hiện theo phương pháp thứ ba : sys.exit.


Hoặc, thậm chí tốt hơn theo quan điểm của tôi, bạn có thể chỉ cần làm trực tiếp những gì sys.exitđằng sau hậu trường và chạy:

raise SystemExit

Bằng cách này, bạn không cần phải nhập systrước.

Tuy nhiên, sự lựa chọn này chỉ đơn giản là một phong cách và hoàn toàn phụ thuộc vào bạn.

629 hữu ích 5 bình luận chia sẻ

answer

71

Hướng dẫn dùng python systemexit python

Các hàm * quit() , exit()sys.exit()hoạt động theo cùng một cách: chúng đưa ra SystemExitngoại lệ. Vì vậy, không có sự khác biệt thực sự, ngoại trừ sys.exit()luôn luôn có sẵn exit()quit()chỉ có sẵn nếu sitemô-đun được nhập khẩu.

Các os._exit()chức năng rất đặc biệt, nó thoát ngay lập tức mà không gọi bất kỳ chức năng dọn dẹp (nó không đệm tuôn ra, ví dụ). Điều này được thiết kế cho các trường hợp sử dụng chuyên môn cao ... về cơ bản, chỉ ở trẻ sau một os.fork()cuộc gọi.

Phần kết luận

  • Sử dụng exit()hoặc quit()trong REPL.

  • Sử dụng sys.exit()trong các kịch bản, hoặc raise SystemExit()nếu bạn thích.

  • Sử dụng os._exit()cho các tiến trình con để thoát sau khi gọi đến os.fork().

Tất cả những điều này có thể được gọi mà không có đối số hoặc bạn có thể chỉ định trạng thái thoát, ví dụ: exit(1)hoặc raise SystemExit(1)thoát với trạng thái 1. Lưu ý rằng các chương trình di động bị giới hạn để thoát mã trạng thái trong phạm vi 0-255, nếu bạn raise SystemExit(256)trên nhiều hệ thống, điều này sẽ bị cắt ngắn và quá trình của bạn sẽ thực sự thoát với trạng thái 0.

Chú thích

* Trên thực tế, quit()exit()là các đối tượng thể hiện có thể gọi được, nhưng tôi nghĩ việc gọi chúng là các hàm là ổn.

71 hữu ích 0 bình luận chia sẻ

answer

32

Hướng dẫn dùng python systemexit python

sys.exit là cách chính tắc để thoát.

Trong nội bộ sys.exitchỉ tăng SystemExit. Tuy nhiên, gọi sys.exitlà thành ngữ hơn là SystemExittrực tiếp nâng cao .

os.exit là một cuộc gọi hệ thống cấp thấp thoát trực tiếp mà không gọi bất kỳ trình xử lý dọn dẹp nào.

quitexitchỉ tồn tại để cung cấp một cách dễ dàng thoát khỏi dấu nhắc Python. Điều này dành cho người dùng mới hoặc người dùng vô tình nhập dấu nhắc Python và không muốn biết đúng cú pháp. Họ có khả năng thử gõ exithoặc quit. Mặc dù điều này sẽ không thoát khỏi trình thông dịch, nhưng ít nhất nó cũng đưa ra một thông báo cho họ biết lối thoát:

>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$

Đây thực chất chỉ là một bản hack sử dụng thực tế là trình thông dịch in ra __repr__bất kỳ biểu thức nào bạn nhập tại dấu nhắc.

32 hữu ích 0 bình luận chia sẻ

Hướng dẫn dùng python systemexit python

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

Hướng dẫn dùng python systemexit python