Thank you all for links. Much appreciated.
> Begin forwarded message: > > From: Michael Foord <fuzzy...@gmail.com> > Subject: Re: [Python-ideas] Re: Undefined type > Date: 8 June 2023 at 17:41:46 EEST > To: david.me...@gmail.com > Cc: Dom Grigonis <dom.grigo...@gmail.com>, python-ideas@python.org > > There's an implementation of a sentinel object in unittest.mock : > > >>> from unittest.mock import sentinel > >>> sentinel.THING > sentinel.THING > > On Thu, 8 Jun 2023 at 15:20, David Mertz, Ph.D. <david.me...@gmail.com > <mailto:david.me...@gmail.com>> wrote: > https://peps.python.org/pep-0661/ <https://peps.python.org/pep-0661/> > > On Thu, Jun 8, 2023 at 9:58 AM Dom Grigonis <dom.grigo...@gmail.com > <mailto:dom.grigo...@gmail.com>> wrote: > This has been bugging me for a long time. It seems that python doesn’t have a > convention for “Undefined” type. > > When I started using python I naturally used None for it (as advised). > > However, the more I work with python, the more I find that None is a > meaningful type. And it is a type that is convenient to use in a lot of > cases, where it is not actually “None”. > > One big example is: > numpy: array[None, :] > > Another is simple cascading of defaults. > E.g. > > ```python > class A: > def __init__(self, default=’string'): > self.default = default > > def method(self, default=None): > default = default if default is not None else self.default > dct[‘key’] = other_dict.get(‘key’, default) > return to_json(dct) > ``` > > None has a logic in `some_func`, which is important. > Now if I want to enforce None passed to to_json I have no way to do it. > > I know there are many workarounds for this, but there is no `consistent` way > of doing this. > > I have been using Ellipsis in the past, but it doesn’t feel right, because it > also has a meaning and I might need to use those functions with e.g. numpy in > he future and will have to change it. > > Now, I came back to this issue again and my latest solution is to just define: > UNDEFINED = object() > in library constants.py > > Then code above is very clear and I think this is a good and sustainable > solution. > > I know, that in a way ’None’ is already this, but it is generally used in 2 > ways: > 1. A variable/argument is undefined in python space > 2. Global indication, that a value is undefined (e.g. equivalence of null in > json) > > What I am proposing is to have 1 more constant in python ‘Undefined’, which > will indicate ‘Undefined’ in python space and leave None to be used in more > general sense. > > I also found this article while looking for solution just now: > https://levelup.gitconnected.com/python-why-none-is-not-nothing-bb3de55dd471 > <https://levelup.gitconnected.com/python-why-none-is-not-nothing-bb3de55dd471> > It seems that people who use typing are also running into ambiguities and > trying to hack something together. > I avoid typing until its 99% mature so can't comment more on this. > > What are your thoughts? Am I onto something or am I missing something? Anyone > else had similar encounters? > > > > > > > > > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > <mailto:python-ideas@python.org> > To unsubscribe send an email to python-ideas-le...@python.org > <mailto:python-ideas-le...@python.org> > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > <https://mail.python.org/mailman3/lists/python-ideas.python.org/> > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/RGUNJYXWHE7UM2W6FCAMGLJVLXEYHA2Q/ > > <https://mail.python.org/archives/list/python-ideas@python.org/message/RGUNJYXWHE7UM2W6FCAMGLJVLXEYHA2Q/> > Code of Conduct: http://python.org/psf/codeofconduct/ > <http://python.org/psf/codeofconduct/> > > > -- > The dead increasingly dominate and strangle both the living and the > not-yet born. Vampiric capital and undead corporate persons abuse > the lives and control the thoughts of homo faber. Ideas, once born, > become abortifacients against new conceptions. > _______________________________________________ > Python-ideas mailing list -- python-ideas@python.org > <mailto:python-ideas@python.org> > To unsubscribe send an email to python-ideas-le...@python.org > <mailto:python-ideas-le...@python.org> > https://mail.python.org/mailman3/lists/python-ideas.python.org/ > <https://mail.python.org/mailman3/lists/python-ideas.python.org/> > Message archived at > https://mail.python.org/archives/list/python-ideas@python.org/message/YTCPDFDUZTMTXS5LYHKCYJ23WVMPE6CL/ > > <https://mail.python.org/archives/list/python-ideas@python.org/message/YTCPDFDUZTMTXS5LYHKCYJ23WVMPE6CL/> > Code of Conduct: http://python.org/psf/codeofconduct/ > <http://python.org/psf/codeofconduct/> > > > -- > Michael Foord > Python Consultant, Contractor and Trainer > https://agileabstractions.com/ <https://agileabstractions.com/>
_______________________________________________ Python-ideas mailing list -- python-ideas@python.org To unsubscribe send an email to python-ideas-le...@python.org https://mail.python.org/mailman3/lists/python-ideas.python.org/ Message archived at https://mail.python.org/archives/list/python-ideas@python.org/message/RUX6BASSBPR2DRLDZD5NUSQS5R3E4QT7/ Code of Conduct: http://python.org/psf/codeofconduct/