Python çıkış komutları - neden bu kadar çok ve her biri ne zaman kullanılmalı?

Görünüşe göre python, betik yürütmeyi durdurmak için birçok farklı komutu destekliyor.
Bulduğum seçenekler şunlardır: quit(),exit(),sys.exit(),os._exit()`

Kaçırdığım bir şey var mı? Aralarındaki fark nedir? Her birini ne zaman kullanırdınız?

Onlar hakkında biraz bilgi vereyim:

  1. quit() perde arkasında SystemExit istisnasını yükseltir.

Ayrıca, yazdırırsanız bir mesaj verecektir:

    >>> print (quit)
    Çıkmak için quit() veya Ctrl-Z artı Return tuşlarını kullanın
    >>>

Bu işlev Python bilmeyen kişilere yardımcı olmak için eklenmiştir. Sonuçta, yeni başlayan birinin Python'dan çıkmak için deneyeceği en olası şeylerden biri quit yazmaktır.

Bununla birlikte, quit üretim kodunda kullanılmamalıdır. Bunun nedeni, yalnızca site modülü yüklüyse çalışmasıdır. Bunun yerine, bu fonksiyon sadece yorumlayıcıda kullanılmalıdır.

  1. exit() quit için bir takma addır (ya da tam tersi). Python'u daha kullanıcı dostu yapmak için birlikte var olurlar.

Ayrıca, basıldığında bir mesaj da verir:

    >>> print (exit)
    Çıkmak için exit() veya Ctrl-Z artı Return tuşlarını kullanın
    >>>

Ancak, quit gibi, exit de üretim kodunda kullanılmak için kötü kabul edilir ve yorumlayıcıda kullanılmak üzere ayrılmalıdır. Bunun nedeni, onun da site modülüne dayanmasıdır.

  1. sys.exit() arka planda SystemExit istisnasını yükseltir. Bu, bu açıdan quit ve exit ile aynı olduğu anlamına gelir.

Ancak bu ikisinin aksine, sys.exitin üretim kodunda kullanılmasının iyi olduğu düşünülmektedir. Bunun nedeni sys modülünün her zaman orada olacak olmasıdır.

  1. os._exit() programdan temizleme işleyicilerini çağırmadan, stdio tamponlarını yıkamadan vs çıkar. Bu nedenle, standart bir çıkış yolu değildir ve yalnızca özel durumlarda kullanılmalıdır. Bunlardan en yaygın olanı os.fork tarafından oluşturulan çocuk süreç(ler)dir.

Verilen dört yöntemden sadece bu yöntemin benzersiz olduğunu unutmayın.

Özetle, dört yöntem de programdan çıkar. Ancak, ilk ikisinin üretim kodunda kullanılmasının kötü olduğu düşünülmektedir ve sonuncusu yalnızca özel senaryolarda kullanılan standart olmayan, kirli bir yoldur. Dolayısıyla, bir programdan normal bir şekilde çıkmak istiyorsanız, üçüncü yöntemi kullanın: sys.exit.


Ya da bence daha da iyisi, sys.exitin perde arkasında yaptığı şeyi doğrudan yapabilir ve çalıştırabilirsiniz:

raise SystemExit

Bu şekilde, önce sys dosyasını içe aktarmanız gerekmez.

Ancak, bu seçim sadece bir stil seçimidir ve tamamen size bağlıdır.

Yorumlar (8)

lt;sup>* quit(), exit() ve sys.exit() fonksiyonları aynı şekilde çalışır: SystemExit istisnasını yükseltirler. Yani sys.exit() her zaman kullanılabilirken exit() ve quit() sadece site modülü içe aktarılmışsa kullanılabilir olması dışında gerçek bir fark yoktur.

os._exit()fonksiyonu özeldir, herhangi bir temizleme fonksiyonu çağırmadan hemen çıkar (örneğin tamponları yıkamaz). Bu, son derece özel kullanım durumları için tasarlanmıştır... temel olarak, yalnızca biros.fork()` çağrısından sonraki çocukta.

Sonuç

  • REPL içinde exit() veya quit() kullanın.

  • Komut dosyalarında sys.exit() işlevini veya tercih ederseniz raise SystemExit() işlevini kullanın.

  • Alt süreçlerin os.fork() çağrısından sonra çıkması için os._exit() işlevini kullanın.

Bunların tümü bağımsız değişkenler olmadan çağrılabilir veya çıkış durumunu belirtebilirsiniz, örneğin, durum 1 ile çıkmak için exit(1) veya raise SystemExit(1). Taşınabilir programların 0-255 aralığındaki çıkış durum kodlarıyla sınırlı olduğunu unutmayın, birçok sistemde raise SystemExit(256) yaparsanız bu kesilir ve işleminiz aslında 0 durumuyla çıkar.

Dipnotlar

  • Aslında, quit() ve exit() çağrılabilir örnek nesnelerdir, ancak onlara fonksiyon demenin uygun olduğunu düşünüyorum.
Yorumlar (0)

Farklı Çıkış Yolları

os._exit():

  • Temizleme işleyicilerini çağırmadan süreçten çıkın.

exit(0):

  • herhangi bir hata / sorun olmadan temiz bir çıkış.

exit(1):

  • Bir sorun / hata / problem vardı ve bu yüzden programdan çıkılıyor.

sys.exit():

  • Sistem ve python kapandığında; program çalıştırıldıktan sonra daha az bellek kullanılıyor demektir.

quit():

  • Python dosyasını kapatır.

Özet

Temelde hepsi aynı şeyi yapar, ancak ne için yaptığınıza da bağlıdır.

Hiçbir şeyi atladığınızı düşünmüyorum ve quit() veya exit() fonksiyonlarına alışmanızı tavsiye ederim.

Eğer büyük dosyalar kullanıyorsanız ya da terminali kontrol etmek için python kullanıyorsanız sys.exit() ve os._exit() kullanmalısınız.

Aksi takdirde esas olarak exit() veya quit() kullanın.

Yorumlar (1)