None versus MISSING sentinel -- request for design feedback
bruno.desthuilliers at gmail.com
bruno.desthuilliers at gmail.com
Fri Jul 15 03:59:17 EDT 2011
On Jul 15, 7:28 am, Steven D'Aprano <steve
+comp.lang.pyt... at pearwood.info> wrote:
>
> I'm designing an API for some lightweight calculator-like statistics
> functions, such as mean, standard deviation, etc., and I want to support
> missing values. Missing values should be just ignored. E.g.:
(snip)
> Against None: it's too easy to mistakenly add None to a data set by mistake,
> because functions return None by default.
Yeps.
> In favour of a dedicated MISSING singleton: it's obvious from context. It's
> not a lot of work to implement compared to using None. Hard to accidentally
> include it by mistake. If None does creep into the data by accident, you
> get a nice explicit exception.
>
> Against MISSING: users may expect to be able to choose their own sentinel by
> assigning to MISSING. I don't want to support that.
What about allowing users to specificy their own sentinel in the
simplest pythonic way:
# stevencalc.py
MISSING = object()
def mean(values, missing=MISSING):
your code here
Or, if you want to make it easier to specify the sentinel once for the
whole API:
# stevencalc.py
MISSING = object()
class Calc(object):
def __init__(self, missing=MISSING):
self._missing = missing
def mean(self, values):
# your code here
# default:
_calc = Calc()
mean = _calc.mean
# etc...
My 2 cents...
More information about the Python-list
mailing list