5 ms·
If this is by design and it optimizes for simplicity and easy interoperability with C, why would you assess its quality as 'good software' based on criteria tha
by mseepgood 3y ago
If this is by design and it optimizes for simplicity and easy interoperability with C, why would you assess its quality as 'good software' based on criteria that are non-goals?
- Asraelite 3y agoIn my eyes, "good software" does not necessarily just mean something that accomplishes its goals. You can set a goal of being bad, and that's kind of what CPython is doing. Of course, "good" and "bad" are relative. If you don't care about performance then there's nothing wrong with CPython.
- acqq 3y agoI agree with that estimate, I think it was really the idea of Python to be less than "good" by design. I mean one doesn't need more than: >>> exit Use exit() or Ctrl-D (i.e. EOF) to exit to see. They have that special handling, but they still don't want to let you out, because... IMO, they just want to be annoying. When a solution could be something like: Note: exit() is needed in scripts. In this prompt Ctrl-D (i.e. EOF) can also be used. Exiting.
- heyodai 3y agoYeah, that message is a pet peeve of mine. Like, you know what I'm trying to do.
- Smaug123 3y agoIt sort of doesn't! It's just doing exactly the same thing it would do with any other identifier: it's printing its `repr`. Try `repr(exit)`!
- a1369209993 3y agoMore to the point, try `[len,exit,repr]`. Consider what would happen if `exit.__repr__()` did terminate the program.
- monoprotic 3y agoThere has been discussion of this change a few times, e.g. https://bugs.python.org/issue44603 https://bugs.python.org/issue44603 I generally agree with your overall sentiment, but I think it's important to note that the behavior is _not_ special handling; it's just the normal `repr` behavior at the REPL, where `exit` is an object like any other, and `repr(exit)` is that message.
- acqq 3y agoWhoever types exit in REPL will never care what "repr(exit)" does. Python has a lot excuses about the need to remain "consistent" but the reality isn't so: >>> x = open( "/tmp/whatever123", "w" ) >>> close( x ) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'close' is not defined. Did you mean: 'cosh'? ... >>> x.close() >>> >>> x = "tttt" >>> x.len() Traceback (most recent call last): File "<stdin>", line 1, in <module> ... >>> len( x ) 4
- zitterbewegung 3y agoI think this is to be consistent that exit is not a statement but a function. This was done with print. 3.0 was an ergonomic fix for cpython developers and language consistency fixes (also redoing the Unicode implementation).