Single line if statement with a continue

Thomas Passin list1 at tompassin.net
Thu Dec 15 00:06:43 EST 2022


PEP-8, which is Guido's style guide and generally good to follow, does 
not completely discourage single-line usage like the example.  It's not 
clear to me how Chris's example fits into the guidelines.

PEP-8:
"While sometimes it’s okay to put an if/for/while with a small body on 
the same line, never do this for multi-clause statements.
...
# Wrong:
if foo == 'blah': do_blah_thing()
for x in lst: total += x
while t < 10: t = delay()
"

If the one-liner were not in a multi-statement block, it would be all 
right with PEP-8.  OTOH, there is nothing that says one has to fully 
comply with PEP-8. I personally tend to use

if test: return

even inside larger blocks.  If one is working with other someone else's 
project and there is a style guide, it's important to follow that guide 
because the other people involved will find it easier to read and 
understand your code.

If you are working on your own project, PEP-8 is always a good starting 
point, and flake8 and pylint will be happier.  That's worth something.

On 12/14/2022 11:35 PM, Chris Angelico wrote:
> On Thu, 15 Dec 2022 at 14:41, Aaron P <transreductionist at gmail.com> wrote:
>>
>> I occasionally run across something like:
>>
>> for idx, thing in enumerate(things):
>>      if idx == 103:
>>          continue
>>      do_something_with(thing)
>>
>> It seems more succinct and cleaner to use:
>>
>> if idx == 103: continue.
>>
>> Of course this would be considered an anti-pattern, and Flake8 will complain.
>>
>> Any opinions, or feedback on the matter.
> 
> Nothing at all wrong with writing that on a single line. If you have
> issues with Flake8 not accepting your choices, reconfigure Flake8 :)
> 
> ChrisA



More information about the Python-list mailing list