repr is generally assumed to be side effect free and cheap to run, so things like debuggers tend to show repr of things in scope, including possibly exit
also then it behaves differently between repl and script, since repr never gets run. to do it properly it has to be a new repl keyword I imagine, but I still don’t know if I’m sold on the idea
It’s not really much extra effort though
They just added so e text to the
__repr__
method on theexit
callable objectThat’s much easier than figuring out if your running this interactively and trying to figure out if this is going to break stuff.
Lemme golf that
~ $ python Python 3.12.10 (main, Apr 9 2025, 18:13:11) [Clang 18.0.3 (https://android.googlesource.com/toolchain/llvm-project d8003a456 on linux Type "help", "copyright", "credits" or "license" for more information. >>> class x: ... def __repr__(s): ... exit(0) ... >>> xit = x() >>> xit ~ $
Not that hard
repr is generally assumed to be side effect free and cheap to run, so things like debuggers tend to show repr of things in scope, including possibly
exit
also then it behaves differently between repl and script, since repr never gets run. to do it properly it has to be a new repl keyword I imagine, but I still don’t know if I’m sold on the idea
Good points. You’re right, it does need solved at the shell level. Glad they did so.