पायथन में, दो समान नाम वाले कार्य हैं, exit()
और sys.exit()
। क्या अंतर है और मुझे एक दूसरे पर कब इस्तेमाल करना चाहिए?
पायथन में, दो समान नाम वाले कार्य हैं, exit()
और sys.exit()
। क्या अंतर है और मुझे एक दूसरे पर कब इस्तेमाल करना चाहिए?
जवाबों:
exit
इंटरैक्टिव शेल के लिए एक सहायक है - sys.exit
कार्यक्रमों में उपयोग के लिए है।
site
मॉड्यूल (जो स्टार्टअप के दौरान स्वचालित रूप से आयात किया जाता है को छोड़कर अगर,-S
कमांड लाइन विकल्प दिया जाता है) में निर्मित नाम स्थान के लिए कई स्थिरांक कहते हैं (उदाहरण के लिएexit
) । वे इंटरैक्टिव दुभाषिया खोल लिए उपयोगी होते हैं और कार्यक्रमों में नहीं किया जाना चाहिए ।
तकनीकी रूप से, वे ज्यादातर ऐसा ही करते हैं: उठाते हुए SystemExit
। sysmodule.csys.exit
में ऐसा करता है :
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;
}
जबकि क्रमशः साइट थिंकपैड और _sitebuiltins.pyexit
में परिभाषित किया गया है।
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')
ध्यान दें कि एक तीसरा निकास विकल्प है, जिसका नाम os._exit है , जो सफाई संचालकों को बुलाए बिना बाहर निकलता है, stdio बफ़र, आदि (और जो सामान्य रूप से केवल बच्चे की प्रक्रिया में उपयोग किया जाना चाहिए fork()
) के बाद बाहर निकलता है ।
from module import *
।
यदि मैं exit()
किसी कोड में उपयोग करता हूं और इसे शेल में चलाता हूं , तो यह संदेश दिखाता है कि मैं प्रोग्राम को मारना चाहता हूं या नहीं। यह वाकई परेशान करने वाला है।
यहाँ देखें
लेकिन sys.exit()
इस मामले में बेहतर है। यह कार्यक्रम को बंद कर देता है और कोई संवाद बॉक्स नहीं बनाता है।
sys.exit()
कार्यक्रमों के अंदर उपयोग किया जाना चाहिए।
-S
इसका उपयोग नहीं किया जाता है।-S
निर्दिष्ट करने के लिए भी इसके साथ काम करने का एक तरीका हैfrom sys import *
।