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ãy để tôi cung cấp một số thông tin về họ:
quit
làm tăngSystemExit
ngoạ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ông
quit
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
exit
là một bí danh choquit
[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ácsite
mô-đun.sys.exit
làm tăngSystemExit
ngoại lệ trong nền. Điều này có nghĩa là nó giống nhưquit
vàexit
trong 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ácsys
mô-đun sẽ luôn ở đó.os._exit
thoá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ởios.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 sys
trướ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
Các hàm * quit[]
, exit[]
và sys.exit[]
hoạt động theo cùng một cách: chúng đưa ra
SystemExit
ngoạ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[]
và quit[]
chỉ có sẵn nếu site
mô-đ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ặcquit[]
trong REPL.Sử dụng
sys.exit[]
trong các kịch bản, hoặcraise 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 đếnos.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[]
và 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
sys.exit
là cách chính tắc để thoát.
Trong nội bộ sys.exit
chỉ tăng SystemExit
. Tuy nhiên, gọi sys.exit
là thành
ngữ hơn là SystemExit
trự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.
quit
và exit
chỉ 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õ exit
hoặ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ẻ