Kaydet (Commit) f3b990e4 authored tarafından Zachary Ware's avatar Zachary Ware

Issue #23932: Update the tutorial section on function annotations.

Patch by Juti Noppornpitak.
üst bb5dbf84
...@@ -673,11 +673,9 @@ Function Annotations ...@@ -673,11 +673,9 @@ Function Annotations
pair: function; annotations pair: function; annotations
single: -> (return annotation assignment) single: -> (return annotation assignment)
:ref:`Function annotations <function>` are completely optional, :ref:`Function annotations <function>` are completely optional metadata
arbitrary metadata information about user-defined functions. Neither Python information about the types used by user-defined functions (see :pep:`484`
itself nor the standard library use function annotations in any way; this for more information).
section just shows the syntax. Third-party projects are free to use function
annotations for documentation, type checking, and other uses.
Annotations are stored in the :attr:`__annotations__` attribute of the function Annotations are stored in the :attr:`__annotations__` attribute of the function
as a dictionary and have no effect on any other part of the function. Parameter as a dictionary and have no effect on any other part of the function. Parameter
...@@ -686,16 +684,17 @@ expression evaluating to the value of the annotation. Return annotations are ...@@ -686,16 +684,17 @@ expression evaluating to the value of the annotation. Return annotations are
defined by a literal ``->``, followed by an expression, between the parameter defined by a literal ``->``, followed by an expression, between the parameter
list and the colon denoting the end of the :keyword:`def` statement. The list and the colon denoting the end of the :keyword:`def` statement. The
following example has a positional argument, a keyword argument, and the return following example has a positional argument, a keyword argument, and the return
value annotated with nonsense:: value annotated::
>>> def f(ham: 42, eggs: int = 'spam') -> "Nothing to see here": >>> def f(ham: str, eggs: str = 'eggs') -> str:
... print("Annotations:", f.__annotations__) ... print("Annotations:", f.__annotations__)
... print("Arguments:", ham, eggs) ... print("Arguments:", ham, eggs)
... return ham + ' and ' + eggs
... ...
>>> f('wonderful') >>> f('spam')
Annotations: {'eggs': <class 'int'>, 'return': 'Nothing to see here', 'ham': 42} Annotations: {'ham': <class 'str'>, 'return': <class 'str'>, 'eggs': <class 'str'>}
Arguments: wonderful spam Arguments: spam eggs
'spam and eggs'
.. _tut-codingstyle: .. _tut-codingstyle:
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment