Sentinel values for special cases

Ben Finney bignose+hates-spam at benfinney.id.au
Sat Oct 28 02:09:25 CEST 2006


Gabriel Genellina <gagsl-py at yahoo.com.ar> writes:

> At Friday 27/10/2006 11:40, Aahz wrote:
> > Ben Finney wrote:
> > >    GLOBAL = object()
> > >
> > >    def insert_ids(ids=GLOBAL):
> > >        if ids is GLOBAL:
> > >            ids = get_global_ids()
> >
> >The one disadvantage of this approach is that it complicates
> >pickling if/when you store the stentinel in an instance.  There are
> >ways of working around that, but none are pleasant.
>
> But why should you store the sentinel in an instance? It's only
> purpose is to detect a special case in the parameter, when None is
> not appropiate.

You might be storing values that will later become parameters to the
function.

    ids_to_be_processed_later = {
        'chin': [14, 7, 9],
        'bin':  foo.GLOBAL,
        'fin':  [74, 98, 12],
    }
    serialise_stuff()

-- 
 \          "The only tyrant I accept in this world is the still voice |
  `\                                       within."  -- Mahatma Gandhi |
_o__)                                                                  |
Ben Finney




More information about the Python-list mailing list