问题
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]).
回答1:
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.
回答2:
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.
回答3:
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.
回答4:
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
来源:https://stackoverflow.com/questions/37215406/exit-is-not-a-keyword-in-python-but-no-error-occurs-while-using-it