Yanıtlar:
Onlar hakkında biraz bilgi vereyim:
quit()
sadece SystemExit
istisnayı 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, quit
gerektiği değil üretim kodunda kullanılabilir. Bunun nedeni sadece site
modü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 site
modüle de bağlı olmasıdır.
sys.exit()
aynı zamanda SystemExit
istisnayı da gündeme getiriyor . Bu demek oluyor ki, onunla aynı quit
ve exit
bu açıdan.
Ancak bu ikisinin aksine sys.exit
üretim kodunda kullanılması iyi kabul edilir. Çünkü sys
modü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.exit
perde 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.
quit
ve 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.
end
komut eklemek için oy raise SystemExit
. BASIC'te olduğu gibi neden böyle basit bir şey olamaz.
print
bir 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 SystemExit
istisna. Dışında Yani gerçek fark yoktur sys.exit()
her zaman mevcuttur, ancak exit()
ve quit()
yalnızca kullanılabilir site
modü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.exit
yükselir SystemExit
. Bununla birlikte, çağrı doğrudan sys.exit
yü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.
quit
ve exit
sadece 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. exit
Veya 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()