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])
.
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 usesys.exit
instead.exit
is an instance of theQuitter
class. TheQuitter
class defines an__repr__
method that returns the string that you see when you typeexit
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 thesite
module.exit
is thesys.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