Python'da, benzer şekilde adlandırılmış iki işlev vardır exit()
ve sys.exit()
. Aradaki fark nedir ve ne zaman diğerinin üzerinde kullanmalıyım?
Python'da, benzer şekilde adlandırılmış iki işlev vardır exit()
ve sys.exit()
. Aradaki fark nedir ve ne zaman diğerinin üzerinde kullanmalıyım?
Yanıtlar:
exit
etkileşimli kabuk için bir yardımcıdır - sys.exit
programlarda kullanılmak üzere tasarlanmıştır.
site
(Eğer hariç, başlangıç sırasında otomatik olarak alınır modül-S
komut satırı seçeneği verilir) yerleşik ad alanına birkaç sabitleri ekler (örneğinexit
) . İnteraktif tercüman kabuğu için kullanışlıdır ve programlarda kullanılmamalıdır .
Teknik olarak, çoğunlukla aynı şeyi yaparlar: yükseltme SystemExit
. sysmodule.c'desys.exit
bunu yapar :
static PyObject *
sys_exit(PyObject *self, PyObject *args)
{
PyObject *exit_code = 0;
if (!PyArg_UnpackTuple(args, "exit", 0, 1, &exit_code))
return NULL;
/* Raise SystemExit so callers may catch it or clean up. */
PyErr_SetObject(PyExc_SystemExit, exit_code);
return NULL;
}
While sırası ile site.py ve _sitebuiltins.py'deexit
tanımlanmıştır .
class Quitter(object):
def __init__(self, name):
self.name = name
def __repr__(self):
return 'Use %s() or %s to exit' % (self.name, eof)
def __call__(self, code=None):
# Shells like IDLE catch the SystemExit, but listen when their
# stdin wrapper is closed.
try:
sys.stdin.close()
except:
pass
raise SystemExit(code)
__builtin__.quit = Quitter('quit')
__builtin__.exit = Quitter('exit')
Temizleme işleyicilerini çağırmadan, stdio tamponlarını temizlemeden vb. Çıkan (ve normalde yalnızca a işleminden sonra alt süreçte kullanılması gereken) üçüncü bir çıkış seçeneğinin, yani os._exit olduğunu unutmayın fork()
.
from module import *
.
Ben kullanırsanız exit()
bir kod ve kabukta çalıştırın, ben programı öldürmek ya da değil isteyip istemediğinizi soran bir mesaj görüntülenir. Gerçekten rahatsız edici.
Buraya bakın
Ancak sys.exit()
bu durumda daha iyidir. Programı kapatır ve herhangi bir iletişim kutusu oluşturmaz.
sys.exit()
programların içinde kullanılmalıdır.
-S
Kullanılmadığı sürece iyi çalışır . Hatta çalışmasını sağlamanın bir yolu-S
belirtmektirfrom sys import *
.