List mutation method gotcha - How well known?

Lie Lie.1296 at gmail.com
Sun Mar 16 05:55:51 EDT 2008


On Mar 15, 1:01 pm, Marc 'BlackJack' Rintsch <bj_... at gmx.net> wrote:
> On Fri, 14 Mar 2008 11:32:41 -0700, Lie wrote:
> > No, there is no need for "void" return type, what I meant is that
> > everything that's not said in the documentation should be assumed to
> > be an implementation detail, a method or a function that doesn't say
> > anything about its return type should be assumed to return an
> > implementation detail (which basically means: Don't rely on this). The
> > fact that list.append returns none is just a coincidence, you might
> > encounter another list.append that returns different thing some time
> > in the future, or the far future, or perhaps at the end of the
> > galaxy's life.
>
> I expect functions with no documentation of what they return to return
> `None`.  Assuming they are documented at all, of course.  :-)
>
> It's like not writing a ``return`` statement in the code: there's always an
> implicit ``return None`` at the end of every function.

I personally won't to rely on it. Sometimes a return statement might
be documented, but not complete enough, like this:

def genericadd(a, b):
    """
    Adds two number, returns the same as longadd if
    either operands are long type and returns the same
    as intadd if all operands are int type.
    <ommiting documentation about what would happen if
    either type are neither long nor int by negligence>
    """
    if isinstance(a, long) or isinstance(b, long):
        return longadd(a, b)
    if isinstance(a, int) and isinstance(b, int):
        return intadd(a, b)
    return "Error"

This function is written badly on purpose to simulate what a less-than-
intelligent programmer might write, which is in no control of ours as
a class user.



More information about the Python-list mailing list