[ python-Bugs-1173637 ] quit should quit
SourceForge.net
noreply at sourceforge.net
Sun Apr 17 12:42:38 CEST 2005
Bugs item #1173637, was opened at 2005-03-30 21:37
Message generated for change (Comment added) made by pernici
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1173637&group_id=5470
Category: None
Group: None
Status: Closed
Resolution: Wont Fix
Priority: 5
Submitted By: Matt Chaput (mchaput)
Assigned to: Nobody/Anonymous (nobody)
Summary: quit should quit
Initial Comment:
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.
----------------------------------------------------------------------
Comment By: Pernici Mario (pernici)
Date: 2005-04-17 10:42
Message:
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.
----------------------------------------------------------------------
Comment By: Armin Rigo (arigo)
Date: 2005-04-02 12:24
Message:
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().
----------------------------------------------------------------------
Comment By: Martin v. Löwis (loewis)
Date: 2005-04-01 21:47
Message:
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".
----------------------------------------------------------------------
Comment By: Raymond Hettinger (rhettinger)
Date: 2005-04-01 18:13
Message:
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.
----------------------------------------------------------------------
Comment By: Armin Rigo (arigo)
Date: 2005-04-01 11:12
Message:
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.
----------------------------------------------------------------------
Comment By: Sjoerd Mullender (sjoerd)
Date: 2005-04-01 11:04
Message:
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...
----------------------------------------------------------------------
Comment By: Raymond Hettinger (rhettinger)
Date: 2005-04-01 06:14
Message:
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.
----------------------------------------------------------------------
Comment By: Ilya Sandler (isandler)
Date: 2005-04-01 04:35
Message:
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"?
----------------------------------------------------------------------
Comment By: Michael Hudson (mwh)
Date: 2005-03-31 09:49
Message:
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.
----------------------------------------------------------------------
Comment By: Raymond Hettinger (rhettinger)
Date: 2005-03-30 22:11
Message:
Logged In: YES
user_id=80475
I concur!
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1173637&group_id=5470
More information about the Python-bugs-list
mailing list