Re: Struggling to understand Callable type hinting

Liste des GroupesRevenir à cl python 
Sujet : Re: Struggling to understand Callable type hinting
De : ram (at) *nospam* zedat.fu-berlin.de (Stefan Ram)
Groupes : comp.lang.python
Date : 18. Jan 2025, 16:47:26
Autres entêtes
Organisation : Stefan Ram
Message-ID : <ParamSpec-20250118164708@ram.dialup.fu-berlin.de>
References : 1 2
ram@zedat.fu-berlin.de (Stefan Ram) wrote or quoted:
T = TypeVar('T')
P = ParamSpec('P')

  We use "ParamSpec('P')" instead of "TypeVar('P')" because "ParamSpec"
  serves a specific purpose that "TypeVar" can't fulfill. Here's why:

  1.  "ParamSpec" is designed to capture the entire parameter
      specification of a callable, including both positional
      and keyword arguments. This is something a regular
      TypeVar can't do.

  2.  While "TypeVar" represents a single type, "ParamSpec"
      represents a collection of parameters. It's a bundle
      that includes all the arguments a function might take.

  3.  ParamSpec allows for more precise typing of
      higher-order functions, especially those that manipulate
      other functions' signatures. For example, it's crucial
      when you want to preserve the exact signature of a
      wrapped function.

  4.  With ParamSpec, you can use the special attributes
      ".args" and ".kwargs" to refer to the positional and
      keyword arguments respectively. This level of
      granularity isn't available with TypeVar.

  5.  ParamSpec enables the use of the Concatenate operator,
      which allows you to add parameters to an existing
      parameter specification. This is particularly useful for
      decorators that add arguments to the functions they wrap.

  In essence, ParamSpec is like a Swiss Army knife for function
  signatures, while TypeVar is more like a single-purpose tool.

  When you're dealing with complex function manipulations, especially
  in the realm of decorators or higher-order functions, ParamSpec gives
  you the flexibility and precision that TypeVar simply can't match.



Date Sujet#  Auteur
18 Jan 25 * Struggling to understand Callable type hinting6Ian Pilcher
18 Jan 25 +- Re: Struggling to understand Callable type hinting1Paul Rubin
18 Jan 25 `* Re: Struggling to understand Callable type hinting4Stefan Ram
18 Jan 25  +- Re: Struggling to understand Callable type hinting1Stefan Ram
18 Jan 25  +- Re: Struggling to understand Callable type hinting1Stefan Ram
18 Jan 25  `- Re: Struggling to understand Callable type hinting1Stefan Ram

Haut de la page

Les messages affichés proviennent d'usenet.

NewsPortal