diff --git a/Doc/whatsnew/3.6.rst b/Doc/whatsnew/3.6.rst index 999d29f3630..3cfb956ae4d 100644 --- a/Doc/whatsnew/3.6.rst +++ b/Doc/whatsnew/3.6.rst @@ -72,7 +72,7 @@ New syntax features: * PEP 515: Underscores in Numeric Literals -* PEP 526: Syntax for Variable Annotations +* PEP 526: :ref:`Syntax for Variable Annotations ` * PEP 525: Asynchronous Generators @@ -277,6 +277,42 @@ evaluated at run time, and then formatted using the :func:`format` protocol:: See :pep:`498` and the main documentation at :ref:`f-strings`. + +.. _variable-annotations: + +PEP 526: Syntax for variable annotations +======================================== + +:pep:`484` introduced standard for type annotations of function parameters, +a.k.a. type hints. This PEP adds syntax to Python for annotating the +types of variables including class variables and instance variables:: + + primes: List[int] = [] + + captain: str # Note: no initial value! + + class Starship: + stats: Dict[str, int] = {} + +Just as for function annotations, the Python interpreter does not attach any +particular meaning to variable annotations and only stores them in a special +attribute ``__annotations__`` of a class or module. +In contrast to variable declarations in statically typed languages, +the goal of annotation syntax is to provide an easy way to specify structured +type metadata for third party tools and libraries via the abstract syntax tree +and the ``__annotations__`` attribute. + +.. seealso:: + + :pep:`526` -- Syntax for variable annotations. + PEP written by Ryan Gonzalez, Philip House, Ivan Levkivskyi, Lisa Roach, + and Guido van Rossum. Implemented by Ivan Levkivskyi. + + Tools that use or will use the new syntax: + `mypy `_, + `pytype `_, PyCharm, etc. + + .. _pep-529: PEP 529: Change Windows filesystem encoding to UTF-8