'exit' is not a keyword in Python, but no error occurs while using it

ε祈祈猫儿з 提交于 2019-12-22 08:55:17

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!