seeking deeper (language theory) reason behind Python design choice
Marko Rauhamaa
marko at pacujo.net
Thu May 10 18:49:48 EDT 2018
Chris Angelico <rosuav at gmail.com>:
> On Fri, May 11, 2018 at 5:59 AM, Marko Rauhamaa <marko at pacujo.net> wrote:
>> Joking aside, to answer Chris's question, of course you can use a
>> real condition with "while". However, you shouldn't force it or try
>> to avoid "while True". It turns out "while True" is the most natural
>> choice in about half of the while loops.
>
> So if I understand you correctly, you're saying that a real condition
> is better, but "while True" is the best option half the time. In other
> words, "while True" is the ONLY option half the time, since any other
> option would be better.
A real example:
def split_cmd(self, cmd):
args = []
while True:
match = self.TERM_PTN.match(cmd)
if match is None:
return None, None
args.append(match.group('term'))
if not match.group('sep'):
break
cmd = cmd[match.end(0):]
verb = args.pop(0).upper()
return verb, args
You *could* get rid of True. For example:
def split_cmd(self, cmd):
args = []
match = self.TERM_PTN.match(cmd)
while match is not None:
args.append(match.group('term'))
if not match.group('sep'):
verb = args.pop(0).upper()
return verb, args
cmd = cmd[match.end(0):]
match = self.TERM_PTN.match(cmd)
return None, None
However, that would be a slight stylistic degradation because
1. the redundant matching statement is redundant and
2. an abnormal return is at the bottom of the function.
Marko
More information about the Python-list
mailing list