回答:
exit
インタラクティブシェルのヘルパーです- sys.exit
プログラムでの使用を目的としています。
site
(場合を除き、起動時に自動的にインポートされ、モジュール-S
のコマンドラインオプションが指定されている)は、組み込みの名前空間にいくつかの定数を追加します(例exit
)。これらは対話型インタープリターシェルに役立ち、プログラムでは使用しないでください。
技術的には、ほとんど同じですSystemExit
。sysmodule.cでsys.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;
}
while exit
はそれぞれsite.pyと_sitebuiltins.pyで定義されています。
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')
3番目の終了オプション、つまりos._exitがあることに注意してください。これは、クリーンアップハンドラーの呼び出し、stdioバッファーのフラッシュなどを行わずに終了します(通常、の後の子プロセスでのみ使用する必要がありますfork()
)。
from module import *
。
exit()
コードで使用してシェルで実行すると、プログラムを強制終了するかどうかを尋ねるメッセージが表示されます。それは本当に不安です。
こちらをご覧ください
しかしsys.exit()
、この場合はより良いです。プログラムを閉じ、ダイアログボックスを作成しません。
sys.exit()
必要な場合でも、プログラム内で使用する必要があります。
-S
使用しない限り、正常に動作します。でも動作させる方法-S
は、を指定することfrom sys import *
です。