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])
.
4 Answers 4
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.
-
1The python doc. calls
exit
a constant: docs.python.org/3.5/library/constants.htmlcdarke– cdarke2016年05月13日 17:11:16 +00:00Commented 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...mgilson– mgilson2016年05月13日 17:15:29 +00:00Commented May 13, 2016 at 17:15
-
1Agreed, python doesn't really have constants (OK, readonly properties), and it breaks PEP008 if it is one because it should be uppercase!cdarke– cdarke2016年05月13日 17:17:18 +00:00Commented May 13, 2016 at 17:17
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.
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.
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
-
2
exit
has the same functionality, but it is not the same assys.exit
. See @zondo's post and stackoverflow.com/questions/6501121/…cdarke– cdarke2016年05月13日 17:03:04 +00:00Commented May 13, 2016 at 17:03
exit
equalsUse exit() or Ctrl-D (i.e. EOF) to exit
, like a constant string.exit
is a constant added bysite.py
, not a keyword or built-in function. Not a duplicate, but see stackoverflow.com/questions/6501121/…