Yanıtlar:
Onlar hakkında biraz bilgi vereyim:
quit()sadece SystemExitistisnayı ortaya çıkarır .
Ayrıca, yazdırırsanız, bir mesaj verecektir:
>>> print (quit)
Use quit() or Ctrl-Z plus Return to exit
>>>
Bu işlevsellik, Python'u tanımayan kişilere yardımcı olmak için dahil edildi. Sonuçta, bir aceminin Python'dan çıkmaya çalışacağı en olası şeylerden biri yazıyor quit.
Bununla birlikte, quitgerektiği değil üretim kodunda kullanılabilir. Bunun nedeni sadece sitemodül yüklüyse çalışmasıdır. Bunun yerine, bu işlev yalnızca yorumlayıcıda kullanılmalıdır.
exit(), quit(veya tam tersi) için bir takma addır. Python'u daha kullanıcı dostu hale getirmek için birlikte var olurlar.
Ayrıca, yazdırıldığında da bir mesaj verir:
>>> print (exit)
Use exit() or Ctrl-Z plus Return to exit
>>>
Ancak, böyle quit, exitüretim kodunda kullanmak kötü olarak kabul edilir ve tercüman kullanılmak üzere ayrılmalıdır. Bunun nedeni sitemodüle de bağlı olmasıdır.
sys.exit()aynı zamanda SystemExitistisnayı da gündeme getiriyor . Bu demek oluyor ki, onunla aynı quitve exitbu açıdan.
Ancak bu ikisinin aksine sys.exitüretim kodunda kullanılması iyi kabul edilir. Çünkü sysmodül her zaman orada olacaktır.
os._exit()temizleme işleyicilerini çağırmadan, stdio arabelleklerini vb . temizlemeden programdan çıkar . Bu nedenle, çıkmak için standart bir yol değildir ve sadece özel durumlarda kullanılmalıdır. Bunlardan en yaygın olanı, tarafından oluşturulan alt süreç (ler) dir os.fork.
Verilen dört yöntemin sadece bu yöntemde benzersizdir.
Özetle, dört yöntemin tümü programdan çıkar. Bununla birlikte, ilk ikisinin üretim kodunda kullanılması kötü olarak kabul edilir ve sonuncusu sadece özel senaryolarda kullanılan standart olmayan, kirli bir yoldur. Normalde bir program çıkmak istiyor Yani, üçüncü yöntemi ile gidin: sys.exit.
Ya da, bence daha da iyisi, doğrudan sys.exitperde arkasında ne yapabilir ve koşabilirsiniz:
raise SystemExit
Bu şekilde, sysönce içe aktarmanıza gerek yoktur .
Ancak, bu seçim sadece tarzda bir seçimdir ve tamamen size bağlıdır.
quitve bırakmadan kabuğundan exitçıkın sys.exit.
sys.exit()kapatmanın güvenilir bir yolu değildir. Bir iş parçacığının içinde çağrılırsa, ana iş parçacığında olmadığı sürece yalnızca bu iş parçacığını sonlandıracaktır. Bu, özellikle bazı tercümanlar görünmez bir şekilde çağrıları işleyeceği için, çağrı ana iş parçacığında olmadığı için programın devam ettiği birçok duruma yol açabilir.
endkomut eklemek için oy raise SystemExit. BASIC'te olduğu gibi neden böyle basit bir şey olamaz.
printbir ifadeden bir işleve neden değiştirildiğine benzer . Sözdizimi eklemek kolaydır, ancak bunu yaparken karmaşıklık maliyeti vardır.
sys.exit()mi?
Fonksiyonları * quit() , exit()ve sys.exit()aynı şekilde işlev: Onlar yükseltmek SystemExitistisna. Dışında Yani gerçek fark yoktur sys.exit()her zaman mevcuttur, ancak exit()ve quit()yalnızca kullanılabilir sitemodül alınır.
os._exit()Fonksiyonu (örneğin, bir hizada değil tampon yok) herhangi bir temizleme işlevlerini çağırmadan hemen çıkar, özeldir. Bu, son derece uzmanlaşmış kullanım durumları için tasarlanmıştır ... temel olarak, sadece os.fork()çağrıdan sonra çocukta .
REPL içinde exit()veya kullanın quit().
sys.exit()Komut dosyalarında veya raise SystemExit()isterseniz kullanın .
os._exit()Bir çağrıdan sonra alt işlemlerin çıkması için kullanın os.fork().
Bunların tümü bağımsız değişkenler olmadan çağrılabilir veya çıkış durumunu, örneğin exit(1)veya raise SystemExit(1)durum 1 ile çıkmak için belirtebilirsiniz. Taşınabilir programların 0-255 aralığındaki çıkış durum kodlarıyla sınırlı olduğunu unutmayın raise SystemExit(256). kesilir ve işleminiz durum 0 ile gerçekten çıkacaktır.
* Aslında, quit()ve exit()çağrılabilir örnek nesneler, ama onlara fonksiyonları çağırmak için uygun olduğunu düşünüyorum.
os._exit():
exit(0):
exit(1):
sys.exit():
quit():
Temel olarak hepsi aynı şeyi yapar, ancak aynı zamanda ne için yaptığınıza da bağlıdır.
Hiçbir şeyi dışarıda bıraktığınızı sanmıyorum ve quit()ya da alışmanızı tavsiye ederim exit().
Sen kullanmak istiyorsunuz sys.exit()ve os._exit()sen büyük dosyaları kullanıyor veya terminal kontrol etmek python kullanırken özellikle eğer.
Aksi takdirde esas olarak exit()veya kullanın quit().
sys.exit kanonik çıkış yoludur.
Dahili olarak sys.exityükselir SystemExit. Bununla birlikte, çağrı doğrudan sys.exityükseltmekten daha deyimseldir SystemExit.
os.exit temizleme işleyicilerini çağırmadan doğrudan çıkan düşük düzeyli bir sistem çağrısıdır.
quitve exitsadece Python isteminden kolay bir çıkış yolu sağlamak için var. Bu, yeni kullanıcılar veya yanlışlıkla Python istemine giren ve doğru sözdizimini bilmek istemeyen kullanıcılar içindir. exitVeya yazmayı deneyebilirler quit. Bu yorumlayıcıdan çıkmayacak olsa da, en azından onlara bir çıkış yolu söyleyen bir mesaj yayınlar:
>>> exit
Use exit() or Ctrl-D (i.e. EOF) to exit
>>> exit()
$
Bu aslında yorumlayıcının __repr__bilgi istemine girdiğiniz herhangi bir ifadeyi yazdırdığı gerçeğini kullanan bir hack'tir .
os.abort()