[Tutor] defining functions.. why return?

Kirby Urner urnerk@qwest.net
Wed, 05 Dec 2001 23:48:49 -0800

>THe thing is, if a function doesn't execute a return statement, it
>returns 0 when it finishes.

Not technically correct.  Unless you explicitly return a
value, a function returns None, not 0.

>def func():
>     if 0: return 1  # never runs

   >>> a = func()
   >>> a
   >>> type(a)
   <type 'NoneType'>
   >>> None == func()

>This function will return 0. In the book you're reading,
>the function returns 0 explicitly for clarity. If you drop
>it, it'll make no difference.

Since None evaluates the same as 0 in an if statement,
it's true that dropping 'return 0' in the example given
will work the same.  However, this is not because the
function without a 'return 0' behaves identically.

Some other calling code might look for a return of 0,
and None wouldn't qualify.

   >>> None == 0