I have also wanted sentinel objects many times. These are often useful
for creating a "Not Specified" default value when explicitly passing
`None` has semantic meaning.

There are a few issues with the `sentinel = object()` code. One is
that they don't repr well so they make debugging harder. Another issue
is that they cannot be pickled or copied. You also cannot take a weak
reference to a sentinel which can break some caching code and makes
them harder to use. At work we have a small helper to create sentinels
with a name and optional doc string which is open sourced here:
https://github.com/quantopian/zipline/blob/master/zipline/utils/sentinel.py.

On Thu, Jul 5, 2018 at 3:44 PM, Ed Kellett <e+python-id...@kellett.im> wrote:
> Hi!
>
> On 2018-07-05 20:38, Flavio Curella wrote:
>> More than once I've found myself wanting to create a 'sentinel' value. The
>> most common use case is to differentiate between an argument that has not
>> been provided, and an argument provided with the value `None`.
>
> I generally do something like
>
>     _nothing = object()
>
>> Furthermore, without a common implementation in the std library, various
>> Python libraries had to write their own implementations, which all differs
>> in functionality and behavior.
>
> What functionality does such a thing actually need?
> _______________________________________________
> Python-ideas mailing list
> Python-ideas@python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to