This is the code (Github link):
class Quitter(object):
def __init__(self, name, eof):
self.name = name
self.eof = eof
def __repr__(self):
return 'Use %s() or %s to exit' % (self.name, self.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)
What happens is that the python repl calls __repr__
automatically on each variable/statement that you type into the repl (except assignments e.g. x = 1
).
But this basically only happens in the repl. So "executing" only exit
wouldn't work in a python script as it is not calling __repr__
automatically, so better you learn how to do it right than using just exit
in your python scripts and scratching your head why it works in the repl but not in your code.
If you have a variable called
exit
you've overwritten the function in that scope, and won't be able to execute it.e.g.