Capture-removebg-preview (1)Capture-removebg-preview (1)Capture-removebg-preview (1)Capture-removebg-preview (1)
  • Accueil
  • Services
  • L ‘Equipe
  • Autres services
  • Contact
Blog
✕

Introduction

L’élégance de Python réside dans sa syntaxe et son riche ensemble de constructions de programmation, parmi lesquelles les fermetures se distinguent comme un outil puissant pour l’encapsulation et l’organisation du code. Les fermetures permettent aux fonctions de conserver l’accès aux variables depuis leur portée englobante, favorisant ainsi la modularité et améliorant la clarté du code. Dans cette exploration des fermetures, nous décryptons leur fonctionnement interne et révélons leurs applications potentielles, démontrant comment elles facilitent la création de code concis et réutilisable dans le paradigme de programmation fonctionnelle de Python.

En plongeant dans le monde des fermetures, nous nous engageons dans un voyage pour comprendre leur rôle dans la programmation Python et leur signification pratique. En disséquant des exemples et en élucidant les concepts de base, nous visons à doter les développeurs des connaissances et des idées nécessaires pour exploiter tout le potentiel des fermetures dans leurs projets Python, favorisant ainsi une appréciation plus profonde de cet aspect fondamental du langage.

Que sont les fermetures en Python ?

Les fermetures en Python sont des fonctions qui mémorisent l’environnement dans lequel elles ont été créées. Ils peuvent accéder aux variables à partir de leur portée englobante.

Par exemple, considérons cet extrait de code :

Code:

def outer_function(message):

    def inner_function():

        print(message)

    

    return inner_function

my_func = outer_function("Hello, World!")

my_func()

Dans ce code, `inner_function` est une fermeture qui mémorise la variable `message` de outer_function. Lorsque `my_func` est appelé, il affiche « Hello, World ! ».

Les fermetures aident à créer des fonctions avec un comportement prédéfini en fonction de l’environnement dans lequel elles ont été définies. Ils peuvent être des outils puissants en programmation fonctionnelle.

Comment fonctionnent les fermetures en Python ?

Fonctions imbriquées

En Python, nous pouvons définir une fonction à l’intérieur d’une autre fonction. C’est ce qu’on appelle une fonction imbriquée.

Code:

def outer_function():

    x = 10

    def inner_function():

        print(x)

    inner_function()

outer_function()

Accéder aux variables à partir de fonctions externes

Les fonctions internes peuvent accéder aux variables depuis leurs fonctions externes. Cela est possible grâce aux fermetures.

Code:

def outer_function():

    x = 10

    def inner_function():

        print(x)

    return inner_function

my_func = outer_function()

my_func()

Renvoyer des fonctions à partir de fonctions

En Python, les fonctions peuvent renvoyer d’autres fonctions. Il s’agit d’une fonctionnalité puissante de la programmation fonctionnelle.

Code:

def outer_function(msg):

    def inner_function():

        print(msg)

    return inner_function

my_func = outer_function("Hello, World!")

my_func()

En comprenant les fonctions imbriquées, en accédant aux variables des fonctions externes et en renvoyant les fonctions des fonctions, vous pouvez exploiter la puissance des fermetures en Python.

Cas d’utilisation quotidienne des fermetures Python

Fonctions de rappel

Les fonctions de rappel sont couramment utilisées avec les fermetures en Python. Ces fonctions sont passées en arguments à d’autres fonctions et sont appelées lorsque certains événements se produisent. Par exemple, créons une simple fonction de rappel qui imprime un message lorsqu’elle est appelée :

Code:

def callback_function():

    print("Callback function called")

def main_function(callback):

    print("Main function executing")

    callback()

main_function(callback_function)

Décorateurs

Les décorateurs sont un outil puissant en Python qui nous permet d’ajouter des fonctionnalités aux fonctions existantes sans modifier leur code. Les fermetures sont souvent utilisées pour mettre en œuvre des décorateurs. Voici un exemple de décorateur simple utilisant des fermetures :

Code:

def my_decorator(func):

    def wrapper():

        print("Something is happening before the function is called.")

        func()

        print("Something is happening after the function is called.")

    return wrapper

@my_decorator

def say_hello():

    print("Hello!")

say_hello()

Mémorisation

La mémorisation est une technique utilisée pour accélérer l’exécution de fonctions en stockant les résultats d’appels de fonctions coûteux et en renvoyant le résultat mis en cache lorsque les mêmes entrées se reproduisent. Les fermetures peuvent être utilisées pour implémenter la mémorisation. Voici un exemple simple de mémorisation utilisant des fermetures :

Code:

def memoize(func):

    cache = {}

    def wrapper(n):

        if n not in cache:

            cache[n] = func(n)

        return cache[n]

    return wrapper

@memoize

def fibonacci(n):

    if n <= 1:

        return n

    return fibonacci(n-1) + fibonacci(n-2)

print(fibonacci(10))

Gestion des événements

Les fermetures sont également couramment utilisées dans la gestion des événements en Python. Les gestionnaires d’événements sont des fonctions appelées lorsqu’un événement spécifique se produit, tel qu’un clic sur un bouton ou une pression sur une touche. Voici un exemple simple de gestion d’événements à l’aide de fermetures :

Code:

def event_handler(event):

    print(f"Event {event} occurred")

def simulate_event(event, handler):

    print("Simulating event...")

    handler(event)

simulate_event("button_click", event_handler)

Implémentation de fermetures Python

Créer une fermeture

Pour créer une fermeture en Python, vous devez définir une fonction imbriquée dans une autre fonction. La fonction interne doit référencer les variables de la fonction externe pour former une fermeture. Regardons un exemple :

Code:

def outer_function(outer_variable):

    def inner_function(inner_variable):

        return outer_variable + inner_variable

    return inner_function

closure = outer_function(5)

print(closure(3))

Sortir:

8

Dans cet extrait de code, `outer_function` renvoie `inner_function`, qui mémorise la valeur de `outer_variable` même après la fin de l’exécution de `outer_function`. C’est l’essence d’une fermeture.

Utilisation des fermetures dans des exemples concrets

Les fermetures sont couramment utilisées dans les mécanismes de gestion d’événements, les fonctions de rappel et les décorateurs en Python. Voyons un exemple pratique d’utilisation de fermetures pour créer une calculatrice simple :

Code:

def calculator(operator):

    def calculate(num1, num2):

        if operator == '+':

            return num1 + num2

        elif operator == '-':

            return num1 - num2

        elif operator == '*':

            return num1 * num2

        elif operator == '/':

            return num1 / num2

    return calculate

addition = calculator('+')

print(addition(5, 3))

Sortir:

8

Dans cet exemple, la fermeture « calculatrice » nous permet de créer différentes fonctions de calculatrice en fonction de l’opérateur qui lui est transmis.

Gestion des variables mutables et immuables

Lorsqu’il s’agit de fermetures, il est essentiel de comprendre comment Python gère les variables mutables et immuables. Les variables immuables telles que les entiers et les chaînes sont transmises par valeur, tandis que les variables mutables telles que les listes et les dictionnaires sont transmises par référence. Illustrons cela avec un exemple :

Code:

def outer_function():

    count = 0

    def inner_function():

        nonlocal count

        count += 1

        return count

    return inner_function

counter = outer_function()

print(counter())  # Output: 

print(counter())  # Output: 12

Dans cet extrait de code, la variable « count » est mutable et partagée entre les fonctions externes et internes, ce qui nous permet de conserver l’état sur plusieurs appels de fonction. Comprendre comment Python gère les variables mutables et immuables est crucial pour les fermetures.

Conclusion

En conclusion, se plonger dans les subtilités des fermetures en Python ne révèle pas seulement une fonctionnalité mais une pierre angulaire du pouvoir expressif de la langue. Notre exploration a révélé comment les fermetures encapsulent l’état et le comportement, permettant aux développeurs d’écrire un code plus modulaire, plus maintenable et plus élégant. Avec les fermetures, les programmeurs Python disposent d’un outil polyvalent pour créer des solutions à la fois efficaces et flexibles., favorisant une appréciation plus profonde de l’art de la programmation dans le paradigme fonctionnel de Python. Forts de cette compréhension, les développeurs sont prêts à relever les défis avec clarté et créativité, repoussant les limites de ce qui est possible en programmation Python.

Share
0

Autres articles

16 décembre 2024

L’émergence des robots conversationnels


En savoir plus
24 juin 2024

5 astuces pour utiliser Chat GPT gratuitement


En savoir plus
27 mai 2024

Fiche de Vérification Extincteur


En savoir plus

Comments are closed.

Entreprise d’intelligence artificielle Paris

ia pme

Meilleur planning ia

 

https://cdlacom.eu/2025/01/09/video-pour-reseaux-sociaux/

© 2025 CDLACOM. Mentions legales
    Blog
      Gérer le consentement aux cookies
      Pour offrir les meilleures expériences, nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations des appareils. Le fait de consentir à ces technologies nous permettra de traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines caractéristiques et fonctions.
      Fonctionnel Toujours activé
      Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
      Préférences
      Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou l’utilisateur.
      Statistiques
      Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques. Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
      Marketing
      Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.
      Gérer les options Gérer les services Gérer {vendor_count} fournisseurs En savoir plus sur ces finalités
      Voir les préférences
      {title} {title} {title}