Python Language Élever le pouvoir


Exemple

Supposons que nous voulions augmenter x à un nombre y .

Vous écrivez ceci comme:

def raise_power(x, y):
    return x**y

Que se passe-t-il si votre valeur y peut prendre un ensemble fini de valeurs?

Supposons que y soit un de [3,4,5] et supposons que vous ne souhaitiez pas offrir à l'utilisateur final la possibilité d'utiliser une telle fonction, car elle nécessite beaucoup de calculs. En fait, vous devriez vérifier si y a une valeur valide et réécrire votre fonction en tant que:

def raise(x, y):
    if y in (3,4,5):
        return x**y
    raise NumberNotInRangeException("You should provide a valid exponent")

Désordonné? Utilisons la forme abstraite et spécialisons-la dans les trois cas: implémentons-les partiellement .

from functors import partial
raise_to_three = partial(raise, y=3)
raise_to_four = partial(raise, y=4)
raise_to_five = partial(raise, y=5)

Que se passe t-il ici? Nous avons fixé les paramètres y et défini trois fonctions différentes.

Nul besoin d'utiliser la fonction abstraite définie ci-dessus (vous pourriez la rendre privée ), mais vous pourriez utiliser des fonctions partielles appliquées pour traiter un nombre à une valeur fixe.