Python'da çıkış (0) ve çıkış (1) arasındaki fark


168

Python ile exit(0)ve exit(1)arasındaki fark nedir ?

Etrafa bakmayı denedim ama bu satırlarda belirli bir soru bulamadım. Zaten yanıtlandıysa, bir bağlantı yeterli olacaktır.


9
İşte exit()dokümanlardaki bir bağlantı , beni sonsuza dek bulmam için götürdü.
Ryne Everett


Sadece exit(0)bu soruda tartışılan ve altçizgi _exit(0)olan biri olduğunu fark ettik
kakule

Bu kodlarla ilgili güzel olan şey, bunların doğrudan ifbir bashsarmalayıcıdaki bir ifadede kullanılabilmesidir , bu nedenle Python programının başarılı olup olmadığı veya sıfırdan farklı bir durum oluşturup oluşturmadığı konusunda daha fazla işlem yapılabilir.
SDsolar

tuhaf, 0
yanlışsa

Yanıtlar:


249

0 ve 1 çıkış kodlarıdır.

exit(0) hatasız / sorunsuz bir çıkış anlamına gelir

exit(1) bazı sorun / hata / sorun olduğu anlamına gelir ve bu yüzden programdan çıkılıyor.

Bu Python'a özgü değildir ve oldukça yaygındır. Sıfır olmayan bir çıkış kodu anormal bir çıkış olarak kabul edilir ve bazen hata kodu sorunun ne olduğunu gösterir. Sıfır hata kodu başarılı bir çıkış anlamına gelir.

Bu, diğer programlar, kabuk, arayan vb. İçin programınıza ne olduğunu bilmek ve buna göre devam etmek için kullanışlıdır.


10
Peki ya çıkış (-1)?
Faizan

16
@Faizan: Çıkış kodu Unix'te 8 bitlik bir değerdir. Eğer çağırırsanız exit(-1), değer eşdeğerdir exit(255)- en az anlamlı 8 bit çağrı yapan programa (kabuk ya da her neyse) aktarılır.
Jonathan Leffler

4
Göre unutmayın docs , exit()tarafından eklenen sitemodül ve programlar tarafından kullanılmamalıdır. Bunun yerine, başka bir modülü içe aktarmak istemiyorsanız, sys.exit()hatta kullanın raise SystemExit.
daviewales

2
Unix / Linux'tan çıkış kodları nedeniyle, Python koşullarında 0'ın Doğru ve 1'in Yanlış değer olduğunu düşünüyordum.
vlyalcin

19

Bu , çalışmayı bitirdiğinde programın çıkış durumunu belirler (genellikle, başarı için 0 ve hata için 1).

Python'a özgü değildir ve kesin etki işletim sisteminize ve programın nasıl çağrıldığına bağlıdır (% 99 olsa da, sadece Python komut dosyalarını çalıştırıyorsanız, önemli değildir).


12

Python da dahil olmak üzere tüm C programları için standart kural exit(0), başarıyı ve exit(1)veya herhangi bir sıfır olmayan değeri (1..255 aralığında) arızayı göstermek içindir. 0..255 aralığının dışındaki herhangi bir değer modulo 256 olarak işlenir (çıkış durumu 8 bitlik bir değerde saklanır). Bazen bu imzalı olarak kabul edilir (böylece -128, -127 vb. Görebilirsiniz) ancak daha çok imzasız olarak kabul edilir.

Bu durum Python'u çağıran kod için kullanılabilir. Bu kural tüm platformlar için geçerlidir, ancak sıfır olmayan çıkış durumunun anlamı farklı platformlarda değişiklik gösterebilir.


7

Bu exit()işleve ilettiğiniz sayı , işletim sistemine verilen programınızın dönüş kodudur. Programınızın bakış açısından hiçbir fark yoktur: yürütme her iki durumda da sona erecek ve işleve sağlanan değer işletim sistemine verilecektir. Ancak bazı araçlar ve komut dosyaları programın çıkış kodunu dikkate alır. Çoğu araç başarılı olduklarında 0 ve hata belirtmek için sıfırdan farklı bir değerle döner.

Dolayısıyla, programınız bir komut dosyasından, otomatik bir araçtan veya dönüş kodunu (IDE gibi) dikkate alan başka bir yazılımdan çalıştırılacaksa, ne döndürdüğünüze dikkat etmelisiniz.

Şüphe duyduğunuzda, her şeyin yolunda olduğunu belirtmek için 0'a dönün.


6

exit(0): Bu, programın başarıyla sonlandırılmasıyla sonuçlanmasına neden olur.

exit(1): Bu, programın sisteme özgü bir anlamla çıkmasına neden olur.

Birçok sistemde, exit(1)bir tür arızaya işaret eder, ancak garanti yoktur.

Hatırladığım gibi, C standardı sadece üç standart çıkış değerini tanır:

  • EXIT_SUCCESS - başarılı fesih
  • EXIT_FAILURE - başarısız fesih
  • 0 -- ile aynı EXIT_SUCCESS
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.