[BangPypers] Return values

Noufal Ibrahim KV noufal at nibrahim.net.in
Sat Sep 20 12:48:42 CEST 2014


On Sat, Sep 20 2014, Harish Vishwanath wrote:

> Couple of approaches:
>
> - Break the api into two. get_stats and get_stats_consolidated. This way,
> the caller who doesn't know what is your default value of "consolidated"
> argument is will not be confused.

This explodes the API. It's similar to having two sort functions
'sort_increasing', and 'sort_decreasing' instead of just a single sort
function with a flag to indicate ordering.

> - Change the return value to be a list always. Without "consolidated" set,
> it will just be [Stats], else [stat1, stat2, stat3..]

That's what I'd do if it were C. An array. However, in python, when I
know that I'm going to return a list with only one item, I'd prefer to
just return it. Otherwise, there will be stuff like 

  if consolidated:
     stats = stats.pop()

and other such nasties in the code.

> - More descriptive return value could be a dict:
> {
>   'consolidated': True|False
>   'value' : []
> }

That's an option though not one that occurred to me. However, then I'd
have to unpack this dictionary every time I called the function and
optionally, do checking too.


I'm not shooting down your ideas. These are what occurred to me too. I'm
just looking for something "neater".

[...]


-- 
Cordially,
Noufal
http://nibrahim.net.in


More information about the BangPypers mailing list