Hi
I often have the need for a generic object to use as the default value
for a function parameter, where 'None' is a valid value for the
parameter.  For example:

    _sentinel = object()

    def first(iterable, default=_sentinel):
        """Return the first element of the iterable, otherwise the default 
value (if
        specified).
        """
        for elem in iterable:   # thx to rhettinger for optim.
          return elem
        if default is _sentinel:
          raise StopIteration
        return default

Here, 'default' could legally accept None, so I cannot use that as the
default value, nor anything else as far as I'm concerned (I don't know
what lives in the iterable, so why should I make assumptions?).
Sometimes in the past I've create generic objects, declared a class,
e.g.:

  class NoDef: pass
  def foo(default=NoDef):
      ...

and lately I've even started using the names of builtin functions (it
bothers me a little bit though, that I do that).

I think Python needs a builtin for this very purpose.  I propose
'nodef', a unique object whose sole purpose is to serve as a default
value.  It should be unique, in the same sense that 'None' is unique.

Comments or alternative solutions?
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to