https://peps.python.org/pep-0661/

On Thu, Jun 8, 2023 at 9:58 AM Dom Grigonis <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
> 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
> 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/RGUNJYXWHE7UM2W6FCAMGLJVLXEYHA2Q/
> Code of Conduct: 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
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/YTCPDFDUZTMTXS5LYHKCYJ23WVMPE6CL/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to