Issue1173637
This issue tracker has been migrated to GitHub,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2005-03-30 21:37 by mchaput, last changed 2022-04-11 14:56 by admin. This issue is now closed.
Messages (11) | |||
---|---|---|---|
msg24829 - (view) | Author: Matt Chaput (mchaput) | Date: 2005-03-30 21:37 | |
When the user types "quit" in the interpreter, instead of quitting the program gives him or her a lecture on the "proper" way to quit. This is very obnoxious. Since the interpreter obviously understands the "quit" command, it should just quit, dammit. |
|||
msg24830 - (view) | Author: Raymond Hettinger (rhettinger) * | Date: 2005-03-30 22:11 | |
Logged In: YES user_id=80475 I concur! |
|||
msg24831 - (view) | Author: Michael Hudson (mwh) | Date: 2005-03-31 09:49 | |
Logged In: YES user_id=6656 I'm not so sure typing quit should quit -- that doesn't seem like Python to me (how would you implement it?) Having quit be the same object as sys.exit seems sensible. |
|||
msg24832 - (view) | Author: Ilya Sandler (isandler) | Date: 2005-04-01 04:35 | |
Logged In: YES user_id=971153 I am not sure adding quit to interpreter is such a good idea: Right now quit is treated as an ordinary (non-keyword) identifier... (with a bit of magic: if quit is not defined then lecture the user :-))... E.g now you can do this: >>> quit=2 >>> quit 2 Would you want to disallow this usage when quit becomes a "magic word"? |
|||
msg24833 - (view) | Author: Raymond Hettinger (rhettinger) * | Date: 2005-04-01 06:14 | |
Logged In: YES user_id=80475 'quit' and 'exit' currently show-up in a dir() of__builtins__. If the OP's suggestion is accepted, it should probably be implemented just like a builtin: def quit(): sys.exit() That approach is not at all magical and still allows shadowing (quit=2, etc.) What we have now is an annoying wart. |
|||
msg24834 - (view) | Author: Sjoerd Mullender (sjoerd) * | Date: 2005-04-01 11:04 | |
Logged In: YES user_id=43607 Something like this instead of the current quit should do the trick: class Quit: def __repr__(self): import sys sys.exit(0) quit = Quit() del Quit The problem with the Raymond's suggestion is that you need to type parentheses. But of course, this does get a little magical... |
|||
msg24835 - (view) | Author: Armin Rigo (arigo) * | Date: 2005-04-01 11:12 | |
Logged In: YES user_id=4771 This discussion keeps coming up time and again. sjoerd's trick has been tried a few times already, until people implementing it realized that trying to display the builtins dict (directly or indirectly) would quit the interpreter! 'quit' cannot just be a synonym for 'sys.exit' either, because typing 'quit' would just print '<built-in function quit>', which is worse than the current situation in term of expliciteness. |
|||
msg24836 - (view) | Author: Raymond Hettinger (rhettinger) * | Date: 2005-04-01 18:13 | |
Logged In: YES user_id=80475 class quit: def __repr__(self): return "Type quit() to exit the interpreter" def __call__(self): sys.exit() Requiring the parentheses is not a big deal as long as there is an advisory where they are omitted. |
|||
msg24837 - (view) | Author: Martin v. Löwis (loewis) * | Date: 2005-04-01 21:47 | |
Logged In: YES user_id=21627 But how is this better than the current >>> quit 'Use Ctrl-D (i.e. EOF) to exit.' I'd rather learn that I have to type Ctrl-D instead of typing quit() I think the original report is misguided: The interpreter does not "obviously understand" the quit command. Instead, it really does not understand it all. The name quit is bound to a string, and the interpreter displays the string. It does not understand at all what the string says. So I'm rejecting the report as "won't fix". |
|||
msg24838 - (view) | Author: Armin Rigo (arigo) * | Date: 2005-04-02 12:24 | |
Logged In: YES user_id=4771 Raymond, an argument against quit() actually quitting the interpreter is that it suddenly makes quit() a quasi-official piece of the Python API, and we're bound to see user programs start to write quit() instead of sys.exit(). |
|||
msg24839 - (view) | Author: Pernici Mario (pernici) | Date: 2005-04-17 10:42 | |
Logged In: YES user_id=756712 To allow the builtin quit() only when using Python interactively, one can put in a start-up quitfile.py def quit(): import sys sys.exit(0) and set export PYTHONSTARTUP=quitfile.py One could add to this file also exit = quit since the builtin exit behaves like quit. |
History | |||
---|---|---|---|
Date | User | Action | Args |
2022-04-11 14:56:10 | admin | set | github: 41780 |
2005-03-30 21:37:00 | mchaput | create |