Fonction imbriquée:
Une fonction imbriquée est définie dans une autre fonction. Ces fonctions peuvent accéder à une variable de la fonction extérieure. La variable non locale dont nous pouvons accéder dans leur portée.
Ex:
Defouter_fun (s):Sortir:
Dans l'exemple ci-dessus, l'inner_fun est une fonction imbriquée, et MSG est une variable non locale. Nous pouvons y accéder à l'intérieur du corps extérieur_fun.
Définition de fermeture:
La fermeture Python est une fonction imbriquée. Nous pouvons accéder à la variable en dehors de la portée. Ce concept est essentiel pour comprendre les décorateurs de python.
Toutes les fonctions imbriquées ne sont pas des fermetures. Les trois critères suivants devraient répondre pour définir une fermeture:
Ex:
#Defining Fonctions imbriquéesSortir:
Dans l'exemple ci-dessus, le salut_msg est la fonction extérieure. Cela crée une fonction intérieure (saluer_msg est la fermeture ici), et il est retourné.
La fonction extérieure accueille_msg renvoie une fonction print_msg, et il est affecté à la variable call_fun. Ici, nous voyons la fonction extérieure terminée son exécution, mais nous pouvons toujours accéder à la variable MSG.
Comment modifier la variable à l'intérieur de la fermeture:
En utilisant un mot-clé non local, nous pouvons modifier la variable à l'intérieur de la fonction intérieure.
Ex: Sans utiliser de mot-clé non local. Ici, nous essayons de modifier la variable NUM à l'intérieur de la fermeture et nous a obtenus non liés à l'embouteille parce que Python considère Num comme une variable locale et Num n'est pas défini à l'intérieur de Fun ().
DefGereate_num ():Sortir:
Ex: Avec une utilisation non local mot-clé. Dans l'exemple ci-dessous en utilisant un mot-clé non local, nous pourrons modifier la variable NUM.
DefGereate_num ():Sortir:
Nous écrire plus d'exemples en utilisant une fermeture:
Ex: Cela imprimera les arguments passés et le nom de la fonction
Defouter (Func):Sortir:
Ex: Dans l'exemple ci-dessous, chaque fois que la fermeture est appelée, les valeurs seront ajoutées à une liste et il ajoutera toutes les valeurs de liste puis renvoie une valeur.
Defaddition ():Sortir:
Ex: Dans cet exemple, multipliez le numéro de paramètre de fonction interne par paramètre de fonction externe
def multiply_by_number (m):
Sortir:
Conclusion:
La fermeture Python est une fonction imbriquée. Avec cela, nous pouvons éviter d'utiliser des variables globales à l'aide de variables non locales. Cela fournit des données de cachette et de compréhension de ce concept utile pour construire un décorateur de python.