[PYTHON] Anwendungsfälle für die Definition verschachtelter Funktionen

Dies ist eine Notiz darüber, wie die Funktion "is_type_factory" implementiert wird, um die Funktion "is_y (x)" zu erstellen, die einen Fehler verursacht, wenn der Typ der Variablen "x" nicht "y" ist, für mehrere Typen wie folgt.

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] Ich habe es in der Quelle gesehen (https://github.com/pandas-dev/pandas/blob/master/pandas/core/config.py).

Die Definitionen von Verschachtelungsfunktionen sind ein Beispiel für die Verwendung auf diese Weise. Das an "is_type_factory" übergebene Argument "_type" fungiert als statische Variable im zurückgegebenen Funktionsobjekt "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

Anwendungsfälle für die Definition verschachtelter Funktionen
[Hikari-Python] Kapitel 06-01 Funktionen (integrierte Funktionen und Funktionsdefinitionen)
Verwenden Sie PySide für die HDA-Benutzeroberfläche
Verwenden Sie die Rückruffunktion in Python
Suchen Sie nach dem Namen der OpenCV-Funktion
Python #Funktion 2 für Super-Anfänger