[Python-Dev] PEP 8 update

Steven D'Aprano steve at pearwood.info
Wed Apr 8 04:16:14 CEST 2015


On Tue, Apr 07, 2015 at 08:47:25AM -0400, Ben Hoyt wrote:
> > My own preference would be:
> >
> >     def foo(x):
> >         if x >= 0:
> >             return math.sqrt(x)
> >         return None
> 
> Kind of getting into the weeds here, but I would always invert this to
> "return errors early, and keep the normal flow at the main indentation
> level". Depends a little on what foo() means, but it seems to me the
> "return None" case is the exceptional/error case, so this would be:
> 
> def foo(x):
>     if x < 0:
>         return None
>     return math.sqrt(x)

While *in general* I agree with "handle the error case early", there are 
cases where "handle the normal case early" is better, and I think that 
this is one of them. Also, inverting the comparison isn't appropriate, 
due to float NANs. With the first version, foo(NAN) returns None (which 
I assumed was deliberate by the OP). In your version, it returns NAN.

But as you say, we're now deep into the weeds...


-- 
Steve


More information about the Python-Dev mailing list