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:
exitetkileşimli kabuk için bir yardımcıdır - sys.exitprogramlarda kullanılmak üzere tasarlanmıştır.
site(Eğer hariç, başlangıç sırasında otomatik olarak alınır modül-Skomut 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.
-SKullanılmadığı sürece iyi çalışır . Hatta çalışmasını sağlamanın bir yolu-Sbelirtmektirfrom sys import *.