[Python-Dev] PEP 484 proposal: don't default to Optional if argument default is None (original) (raw)
Carl Meyer carl at oddbird.net
Tue May 9 14:03:05 EDT 2017
- Previous message (by thread): [Python-Dev] PEP 484 proposal: don't default to Optional if argument default is None
- Next message (by thread): [Python-Dev] PEP 484 proposal: don't default to Optional if argument default is None
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 05/09/2017 10:28 AM, Guido van Rossum wrote:
There's a proposal to change one detail of PEP 484. It currently says:
An optional type is also automatically assumed when the default value is |None|, for example:: |def handleemployee(e: Employee = None): ... | This is equivalent to:: |def handleemployee(e: Optional[Employee] = None) -> None: ... |
Now that we've got some experience actually using Optional with mypy (originally mypy ignored Optional), we're beginning to think that this was a bad idea. There's more discussion at https://github.com/python/typing/issues/275 and an implementation of the change (using a command-line flag) in https://github.com/python/mypy/pull/3248. Thoughts? Some function declarations will become a bit more verbose, but we gain clarity (many users of annotations don't seem to be familiar with this feature) and consistency (since this rule doesn't apply to variable declarations and class attribute declarations).
I've been code-reviewing a lot of diffs adding type coverage over the last few months, and implicit-Optional has been among the most common points of confusion. So I favor this change.
It might be nice to have a less verbose syntax for Optional, but that can be a separate discussion.
Carl
-------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: OpenPGP digital signature URL: <http://mail.python.org/pipermail/python-dev/attachments/20170509/e850ad49/attachment.sig>
- Previous message (by thread): [Python-Dev] PEP 484 proposal: don't default to Optional if argument default is None
- Next message (by thread): [Python-Dev] PEP 484 proposal: don't default to Optional if argument default is None
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]