The "loop and a half"

bartc bc at freeuk.com
Sat Oct 7 08:54:36 EDT 2017


On 07/10/2017 09:35, Steve D'Aprano wrote:
> On Sat, 7 Oct 2017 11:05 am, bartc wrote:

>> Um, that actually follows what interactive Python does.
> 
> 
> What is "that" to which you refer?
> 
> If you mean, "what I, Bart C, suggested, namely having the program exit on a
> blank line", then you are wrong. In the Python interactive interpreter, you
> can enter blank lines, and the interpreter doesn't exit.

> There's one priviso: blank lines are only ignored at the primary prompt >>>
> not the secondary prompt ... where a blank line is used to end the block. But
> the interpreter doesn't exit. A slight compromise for the sake of convenience
> at the interactive prompt.

That's what I mean. Enter is used to end one state and get back to another.

The same thing with my loop evaluating expressions. When you're done 
with with expressions, you might exit in the trivial example, or you 
might get back to a main command loop. Just like Python.

> 
>> (Most of my real interactive programs with a command line interface
>> programs use Escape, quit, exit, q or x to finish.
> 
> And how do you distinguish between calling quit from inside the function, and
> using quit inside the function?

Huh? Most interactive programs aren't language interpreters like Python, 
where everything needs to be considered to be a line in the language syntax.

> Unfortunately ESCAPE is already used. VT100 (the terminal emulation which is
> used in just about all terminals) all control sequences begin with ESC. So
> every time you do something like press an arrow key, the terminal sends ESC
> followed by other stuff. It would be painful if every time you hit an arrow
> key, the interpreter took it as "Exit".

Yes, I discovered this. So my programs that use Escape on Windows needed 
to use Escape Escape on Linux to get around that.

>> Interactive Python requires quit() or exit(), complete with parentheses.
>> Unless you've redefined quit and exit as something else, then you have
>> to crash out by other means.)
> 
> "Crash out", he says.
> 
> If your intention is to prove that you're a know-nothing ignoramus, you're
> doing an excellent job of it.

Yes, crash out. I've always considered control sequences as something 
out of the ordinary used when things go wrong. Eg:

  <<< while 1:
  <<<     pass
  <<<

Here it appears to hang, and nothing you type does anything except (on 
Windows) Ctrl-C. That's what I call crashing out. Although that stays 
within the interpreter. If I press Ctrl-Break instead, it aborts the 
interpreter too.

What exactly is your problem, that anyone who has a different take on 
things must be an 'ignoramus'? And, to boot, an ignoramus who knows nothing?

-- 
bartc



More information about the Python-list mailing list