Perbedaan antara exit (0) dan exit (1) dalam Python

167

Apa perbedaan antara exit(0)dan exit(1)dalam Python?

Saya mencoba melihat-lihat tetapi tidak menemukan pertanyaan khusus pada baris ini. Jika sudah dijawab, tautan akan cukup.

pencari
sumber
9
Inilah tautan ke exit()dalam dokumen , yang membutuhkan waktu lama untuk menemukannya.
Ryne Everett
Baru menyadari ada exit(0)yang dibahas dalam pertanyaan ini dan juga satu dengan garis bawah _exit(0), perbedaannya dijelaskan di sini
cardamom
Yang menyenangkan tentang kode-kode ini adalah bahwa mereka dapat digunakan secara langsung dalam ifpernyataan dalam bashpembungkus, sehingga tindakan lebih lanjut dapat diambil apakah program Python berhasil atau tidak atau meningkatkan status tidak nol.
SDsolar
aneh, jika 0 salah dan 1 benar dalam Python, Anda akan berpikir angka akan berarti sebaliknya
Monica Heddneck

Jawaban:

248

0 dan 1 adalah kode keluar.

exit(0) berarti keluar bersih tanpa kesalahan / masalah

exit(1) berarti ada beberapa masalah / kesalahan / masalah dan itulah sebabnya program keluar.

Ini bukan Python spesifik dan sangat umum. Kode keluar yang tidak nol diperlakukan sebagai keluar yang tidak normal, dan kadang-kadang, kode kesalahan menunjukkan apa masalahnya. Kode kesalahan nol berarti jalan keluar yang berhasil.

Ini berguna untuk program lain, shell, pemanggil, dll. Untuk mengetahui apa yang terjadi dengan program Anda dan melanjutkannya.

manojlds
sumber
10
Dan bagaimana dengan keluar (-1)?
Faizan
16
@ Fanzan: Kode keluar adalah nilai 8-bit pada Unix. Jika Anda memohon exit(-1), nilainya setara dengan exit(255)- 8 bit paling signifikan diteruskan ke program panggilan (shell atau apa pun).
Jonathan Leffler
4
Perhatikan bahwa menurut dokumen , exit()ditambahkan oleh sitemodul, dan tidak boleh digunakan oleh program. Sebaliknya, gunakan sys.exit(), atau bahkan raise SystemExit, jika Anda tidak ingin mengimpor modul lain.
daviewales
2
Karena kode keluar dari Unix / Linux, saya berpikir 0 adalah Benar dan 1 adalah nilai Salah dalam kondisi Python.
vlyalcin
19

Ini menentukan status keluar dari program ketika selesai berjalan (umumnya, 0 untuk keberhasilan dan 1 untuk kesalahan).

Ini tidak unik untuk Python, dan efek pastinya tergantung pada sistem operasi Anda dan bagaimana program dipanggil (meskipun 99% dari waktu, jika Anda hanya menjalankan skrip Python, itu tidak masalah).

David Robinson
sumber
12

Konvensi standar untuk semua program C, termasuk Python, adalah untuk exit(0)menunjukkan keberhasilan, dan exit(1)atau nilai non-nol lainnya (dalam kisaran 1..255) untuk menunjukkan kegagalan. Nilai apa pun di luar kisaran 0..255 diperlakukan modulo 256 (status keluar disimpan dalam nilai 8-bit). Kadang-kadang, itu akan diperlakukan sebagai ditandatangani (sehingga Anda mungkin melihat -128, -127, dll) tetapi lebih biasanya diperlakukan sebagai tidak ditandatangani.

Status ini tersedia untuk kode yang memanggil Python. Konvensi ini berlaku lintas platform, meskipun arti status keluar bukan nol dapat bervariasi pada platform yang berbeda.

Jonathan Leffler
sumber
7

Angka yang Anda berikan ke exit()fungsi hanyalah kode pengembalian program Anda, yang diberikan ke sistem operasi. Dari sudut pandang program Anda, tidak ada perbedaan: eksekusi akan berakhir pada kedua kasus, dan nilai yang diberikan ke fungsi akan diberikan ke OS. Tetapi beberapa alat dan skrip memperhitungkan kode keluar program. Sebagian besar alat mengembalikan 0 ketika mereka berhasil dan bukan nol untuk menunjukkan kesalahan.

Jadi, jika program Anda akan dijalankan dari skrip, alat otomatis atau dari beberapa perangkat lunak lain yang memperhitungkan kode pengembalian (seperti IDE), Anda harus berhati-hati dengan apa yang Anda kembalikan.

Jika ragu, kembalikan 0 untuk menunjukkan semuanya OK.

José Ernesto Lara Rodríguez
sumber
6

exit(0): Ini menyebabkan program untuk keluar dengan penghentian yang sukses.

exit(1): Ini menyebabkan program keluar dengan makna khusus sistem.

Pada banyak sistem, exit(1)menandakan semacam kegagalan, namun tidak ada jaminan.

Seingat saya, standar C hanya mengenali tiga nilai keluar standar:

  • EXIT_SUCCESS - pemutusan hubungan kerja yang berhasil
  • EXIT_FAILURE - terminasi yang gagal
  • 0 -- sama dengan EXIT_SUCCESS
sailakshmi cheedella
sumber