Chris Angelico <ros...@gmail.com>:

> But for the loop itself, you absolutely CAN write this more logically.
> I'll take your second version as a template:
>
>     def split_cmd(self, cmd):
>         args = []
>         while (match := self.TERM_PTN.match(cmd)) 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):]
>         return None, None
>
> And, if this is actually a regex, "is not None" is unnecessary:
>
> while match := self.TERM_PTN.match(cmd):
>
> Now do you understand what I mean about putting the condition into the
> loop header?

Thanks, but no thanks. The "while True" idiom beats that one hands down.

As for the "is not None" test, I generally want to make it explicit
because

 1. that's what I mean and

 2. there's a chance in some context of confusing None with other falsey
    values.


Marko
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to