Chris Angelico <ros...@gmail.com>: > On Fri, May 11, 2018 at 5:59 AM, Marko Rauhamaa <ma...@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 -- https://mail.python.org/mailman/listinfo/python-list