mirror of
https://github.com/python/cpython.git
synced 2025-07-23 19:25:40 +00:00
bpo-46014: Add docs regarding functools.singledispatch
changes in 3.11 (#32282)
Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
parent
6fdb62b1fa
commit
014eb7fd02
2 changed files with 51 additions and 0 deletions
|
@ -436,6 +436,23 @@ The :mod:`functools` module defines the following functions:
|
||||||
... for i, elem in enumerate(arg):
|
... for i, elem in enumerate(arg):
|
||||||
... print(i, elem)
|
... print(i, elem)
|
||||||
|
|
||||||
|
:data:`types.UnionType` and :data:`typing.Union` can also be used::
|
||||||
|
|
||||||
|
>>> @fun.register
|
||||||
|
... def _(arg: int | float, verbose=False):
|
||||||
|
... if verbose:
|
||||||
|
... print("Strength in numbers, eh?", end=" ")
|
||||||
|
... print(arg)
|
||||||
|
...
|
||||||
|
>>> from typing import Union
|
||||||
|
>>> @fun.register
|
||||||
|
... def _(arg: Union[list, set], verbose=False):
|
||||||
|
... if verbose:
|
||||||
|
... print("Enumerate this:")
|
||||||
|
... for i, elem in enumerate(arg):
|
||||||
|
... print(i, elem)
|
||||||
|
...
|
||||||
|
|
||||||
For code which doesn't use type annotations, the appropriate type
|
For code which doesn't use type annotations, the appropriate type
|
||||||
argument can be passed explicitly to the decorator itself::
|
argument can be passed explicitly to the decorator itself::
|
||||||
|
|
||||||
|
@ -535,6 +552,10 @@ The :mod:`functools` module defines the following functions:
|
||||||
.. versionchanged:: 3.7
|
.. versionchanged:: 3.7
|
||||||
The :func:`register` attribute now supports using type annotations.
|
The :func:`register` attribute now supports using type annotations.
|
||||||
|
|
||||||
|
.. versionchanged:: 3.11
|
||||||
|
The :func:`register` attribute now supports :data:`types.UnionType`
|
||||||
|
and :data:`typing.Union` as type annotations.
|
||||||
|
|
||||||
|
|
||||||
.. class:: singledispatchmethod(func)
|
.. class:: singledispatchmethod(func)
|
||||||
|
|
||||||
|
|
|
@ -267,6 +267,36 @@ fractions
|
||||||
that an ``isinstance(some_fraction, typing.SupportsInt)`` check passes.
|
that an ``isinstance(some_fraction, typing.SupportsInt)`` check passes.
|
||||||
(Contributed by Mark Dickinson in :issue:`44547`.)
|
(Contributed by Mark Dickinson in :issue:`44547`.)
|
||||||
|
|
||||||
|
functools
|
||||||
|
---------
|
||||||
|
|
||||||
|
* :func:`functools.singledispatch` now supports :data:`types.UnionType`
|
||||||
|
and :data:`typing.Union` as annotations to the dispatch argument.::
|
||||||
|
|
||||||
|
>>> from functools import singledispatch
|
||||||
|
>>> @singledispatch
|
||||||
|
... def fun(arg, verbose=False):
|
||||||
|
... if verbose:
|
||||||
|
... print("Let me just say,", end=" ")
|
||||||
|
... print(arg)
|
||||||
|
...
|
||||||
|
>>> @fun.register
|
||||||
|
... def _(arg: int | float, verbose=False):
|
||||||
|
... if verbose:
|
||||||
|
... print("Strength in numbers, eh?", end=" ")
|
||||||
|
... print(arg)
|
||||||
|
...
|
||||||
|
>>> from typing import Union
|
||||||
|
>>> @fun.register
|
||||||
|
... def _(arg: Union[list, set], verbose=False):
|
||||||
|
... if verbose:
|
||||||
|
... print("Enumerate this:")
|
||||||
|
... for i, elem in enumerate(arg):
|
||||||
|
... print(i, elem)
|
||||||
|
...
|
||||||
|
|
||||||
|
(Contributed by Yurii Karabas in :issue:`46014`.)
|
||||||
|
|
||||||
hashlib
|
hashlib
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue