Maison > développement back-end > Tutoriel Python > Qu'est-ce que « functools.partial » en Python ?

Qu'est-ce que « functools.partial » en Python ?

Mary-Kate Olsen
Libérer: 2024-12-02 02:37:11
original
533 Les gens l'ont consulté

What is `functools.partial` in Python?

Lisez cet article complet sur Global News One

Qu'est-ce que functools.partial ?

functools.partial crée une nouvelle fonction en appliquant partiellement des arguments à une fonction existante. Ceci est utile pour simplifier les appels de fonction dans les scénarios où certains arguments sont répétitifs ou fixes.

La fonction functools.partial en Python vous permet de "geler" une partie des arguments ou des mots-clés d'une fonction, créant ainsi une nouvelle fonction avec moins de paramètres. C'est particulièrement utile lorsque vous souhaitez fixer certains paramètres d'une fonction tout en gardant d'autres flexibles.

from functools import partial
Copier après la connexion
Copier après la connexion

Syntaxe de base

partial(func, *args, **kwargs)
Copier après la connexion
Copier après la connexion
  • func : La fonction à appliquer partiellement.
  • *args : Arguments positionnels à corriger.
  • `kwargs`** : Arguments de mots clés à corriger.

L'objet renvoyé est une nouvelle fonction où les arguments fixes sont "gelés" et vous n'avez qu'à fournir les arguments restants lors de l'appel de la nouvelle fonction.


Exemples

1. Correction partielle des arguments

def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100
Copier après la connexion
Copier après la connexion

Ici, partial crée un nouveau carré de fonction qui utilise toujours exposant=2.


2. Simplifier les appels de fonction

Supposons que vous ayez une fonction avec plusieurs arguments et que vous l'appeliez souvent avec des valeurs fixes.

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!
Copier après la connexion
Copier après la connexion

3. Partiel à utiliser dans la cartographie

Vous pouvez utiliser partial pour adapter une fonction à des opérations telles que map.

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

# Fix y = 10
multiply_by_10 = partial(multiply, y=10)

# Use in a map
numbers = [1, 2, 3, 4]
result = map(multiply_by_10, numbers)
print(list(result))  # Output: [10, 20, 30, 40]
Copier après la connexion

4. Partiel avec des fonctions qui ont des arguments par défaut

Partial fonctionne de manière transparente avec les fonctions qui ont déjà des arguments par défaut.

def add(a, b=10):
    return a + b

# Fix b to 20
add_with_20 = partial(add, b=20)
print(add_with_20(5))  # Output: 25
Copier après la connexion

5. Combinaison avec d'autres bibliothèques (par exemple, Pandas ou JSON)

Vous pouvez utiliser partial avec des bibliothèques comme Pandas pour simplifier les opérations répétitives.

from functools import partial
Copier après la connexion
Copier après la connexion

Quand utiliser functools.partial

  1. Logique réutilisable :
    • Lorsque vous souhaitez créer des versions réutilisables d'une fonction avec des arguments fixes.
  2. Simplifier les rappels :
    • Utile pour les bibliothèques comme tkinter, asyncio ou threading, où les rappels nécessitent souvent des signatures plus simples.
  3. Programmation Fonctionnelle :
    • Fonctionne bien avec une carte, un filtre ou des opérations similaires.
  4. Amélioration de la lisibilité :
    • Rend le code plus propre en réduisant les arguments redondants.

Remarques et bonnes pratiques

  • Inspection des fonctions partielles : Vous pouvez inspecter les arguments gelés d'une fonction partielle à l'aide de partial.func, partial.args et partial.keywords.
partial(func, *args, **kwargs)
Copier après la connexion
Copier après la connexion
  • Flexibilité : Vous pouvez remplacer les arguments gelés lors de l'appel de la fonction partielle.
def power(base, exponent):
    return base ** exponent

# Create a square function by fixing exponent = 2
square = partial(power, exponent=2)

# Now, square() only needs the base
print(square(5))  # Output: 25
print(square(10))  # Output: 100
Copier après la connexion
Copier après la connexion

Exemple avancé : utilisation de Partial pour les fonctions d'ordre supérieur

def greet(greeting, name):
    return f"{greeting}, {name}!"

# Fix the greeting
say_hello = partial(greet, greeting="Hello")
say_goodbye = partial(greet, greeting="Goodbye")

print(say_hello("Alice"))   # Output: Hello, Alice!
print(say_goodbye("Alice")) # Output: Goodbye, Alice!
Copier après la connexion
Copier après la connexion

L'utilisation de functools.partial peut simplifier et nettoyer votre code, en particulier lorsqu'il s'agit d'appels de fonction répétitifs ou de fonctions d'ordre supérieur. Faites-moi savoir si vous souhaitez plus d'exemples ou de cas d'utilisation avancés !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal