6

I learn that exit is not a keyword in Python by,

import keyword
print('exit' in keyword.kwlist) # Output: False

But there is no reminder of NameError: name 'exit' is not defined while using it. The output of the following snippet code makes me confused. Can anyone help me out?

for i in range(5):
 print(i)
 cur=i if i<2 else exit
print(cur)
# Output
0
1
2
3
4
Use exit() or Ctrl-D (i.e. EOF) to exit

I am unable to get related info about exit from Python documentations, except for exit([code=None]).

asked May 13, 2016 at 16:49
3
  • @Ian, it seems that exit equals Use exit() or Ctrl-D (i.e. EOF) to exit, like a constant string. Commented May 13, 2016 at 16:59
  • Which is an interesting behavior, I suppose... like when you use console.. :) Commented May 13, 2016 at 17:00
  • You found docs.python.org/3.5/library/constants.html which says exit is a constant added by site.py, not a keyword or built-in function. Not a duplicate, but see stackoverflow.com/questions/6501121/… Commented May 13, 2016 at 17:05

4 Answers 4

6

Keywords are part of the python syntax. They usually have special meaning in statements (e.g. for, del, if ...). This has other consequences -- e.g. you can't make a variable with the same name as a keyword.

builtins are callable objects (e.g. functions or at least function-like) that python provides in the namespace by default. examples of builtin functions are things like sorted, id, vars, ...

It's worth noting that exit is a convenience provided when in an interactive session. It's highly encouraged to use sys.exit instead.

answered May 13, 2016 at 16:50
3
  • 1
    The python doc. calls exit a constant: docs.python.org/3.5/library/constants.html Commented May 13, 2016 at 17:11
  • 1
    @cdarke -- Yeah. I'm guessing that's because they didn't have a better thing to call it. It's not a builtin (don't want people using it in scripts because it isn't there ...). With that said -- calling it a constant is a little weird in my opinion... Commented May 13, 2016 at 17:15
  • 1
    Agreed, python doesn't really have constants (OK, readonly properties), and it breaks PEP008 if it is one because it should be uppercase! Commented May 13, 2016 at 17:17
3

exit is an instance of the Quitter class. The Quitter class defines an __repr__ method that returns the string that you see when you type exit into the shell. It also defines a __call__ method. Just as __init__ is called when you use a class like a function, __call__ is called when an instance is used like a function. Therefore, exit() calls the __call__ method, which exits the program.

answered May 13, 2016 at 16:56
0
1

exit is an Built-in Constants added by the site module.

The site module (which is imported automatically during startup, except if the -S command-line option is given) adds several constants to the built-in namespace. They are useful for the interactive interpreter shell and should not be used in programs.

answered Mar 5, 2019 at 10:10
0

exit is the sys.exit function when you are using the interactive console.

Many things exist while they are not keywords (e.g. sum, int...). So you can bind to existing names, but not to keywords

answered May 13, 2016 at 16:51
1

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.