Cas d'utilisation de la définition de fonction imbriquée

Ceci est un mémo expliquant comment implémenter la fonction ʻis_type_factorypour créer la fonction ʻis_y (x)qui provoquera une erreur si le type de la variable x n'est pas y pour plusieurs types comme suit.

config.py


is_int = is_type_factory(int)
is_bool = is_type_factory(bool)
is_float = is_type_factory(float)
is_str = is_type_factory(str)
is_unicode = is_type_factory(compat.text_type)
is_text = is_instance_factory((str, bytes))

[pandas] Je l'ai vu dans la source (https://github.com/pandas-dev/pandas/blob/master/pandas/core/config.py).

L'imbrication des définitions de fonction est un exemple de la façon de l'utiliser de cette manière. L'argument _type passé à ʻis_type_factory agit comme une variable statique dans l'objet fonction retourné ʻinner.

config.py


def is_type_factory(_type):
    """

    Parameters
    ----------
    `_type` - a type to be compared against (e.g. type(x) == `_type`)

    Returns
    -------
    validator - a function of a single argument x , which returns the
                True if type(x) is equal to `_type`

    """

    def inner(x):
        if type(x) != _type:
            raise ValueError("Value must have type '%s'" % str(_type))

    return inner



Recommended Posts

Cas d'utilisation de la définition de fonction imbriquée
[Hikari-Python] Chapitre 06-01 Fonctions (fonctions intégrées et définitions de fonctions)
Utiliser PySide pour l'interface utilisateur HDA
Utiliser la fonction de rappel en Python
Rechercher le nom de la fonction OpenCV
Python #function 2 pour les super débutants