Maison > développement back-end > Tutoriel Python > Comment les fermetures sont-elles implémentées en Python ?

Comment les fermetures sont-elles implémentées en Python ?

WBOY
Libérer: 2023-10-21 10:33:56
original
1116 Les gens l'ont consulté

Comment les fermetures sont-elles implémentées en Python ?

Comment les fermetures sont-elles implémentées en Python ?

Une fermeture est une fonction définie à l'intérieur d'une fonction et fait référence aux variables de la fonction externe à l'intérieur de la fonction. Cette fonctionnalité permet à la fonction interne d'accéder aux variables de la fonction externe, et une fois l'exécution de la fonction externe terminée, la fermeture peut toujours accéder et faire fonctionner les variables de la fonction externe.

Les fermetures sont implémentées en Python en suivant les étapes suivantes :

  1. Définir une fonction externe et définir une fonction interne à l'intérieur : Tout d'abord, nous devons définir une fonction interne à l'intérieur de la fonction externe. Cette fonction intérieure est la fermeture.

    def outer_function():
     # 定义内部函数
     def inner_function():
         pass
    Copier après la connexion
  2. La fonction interne fait référence aux variables de la fonction externe : Dans la fonction interne, nous devons faire référence aux variables de la fonction externe. Vous pouvez utiliser les variables de la fonction externe comme paramètres de la fonction interne ou utiliser les variables de la fonction externe directement à l'intérieur de la fonction interne.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
    Copier après la connexion
  3. Fonction interne de retour : dans la fonction externe, renvoie la fonction interne comme valeur de retour.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
     # 返回内部函数
     return inner_function
    Copier après la connexion
  4. Appelez des fonctions externes pour générer des fermetures : générez des fermetures en appelant des fonctions externes. À ce stade, la fonction interne fait référence aux variables de la fonction externe et peut continuer à accéder à ces variables et à les utiliser une fois l'exécution de la fonction externe terminée.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
     # 返回内部函数
     return inner_function
    
    # 调用外部函数,生成闭包
    closure = outer_function()
    Copier après la connexion

    Grâce aux étapes ci-dessus, nous avons implémenté avec succès des fermetures en Python. À ce stade, nous pouvons accéder et manipuler les variables de la fonction externe en appelant la fermeture.

    closure()  # 输出:10
    Copier après la connexion

    Une caractéristique importante des fermetures est qu'une fois l'exécution de la fonction externe terminée, la fermeture peut toujours accéder et faire fonctionner les variables de la fonction externe. En effet, la fermeture conserve une référence à la variable de fonction externe au lieu de copier la valeur de la variable. Par conséquent, nous pouvons observer le comportement d’une fermeture en l’appelant plusieurs fois.

    def outer_function():
     # 外部函数的变量
     x = 10
     # 定义内部函数
     def inner_function():
         # 引用外部函数的变量
         print(x)
     # 返回内部函数
     return inner_function
    
    # 调用外部函数,生成闭包
    closure = outer_function()
    
    closure()  # 输出:10
    
    # 修改外部函数的变量
    outer_function.x = 20
    
    closure()  # 输出:20
    Copier après la connexion

    Grâce au code ci-dessus, nous pouvons voir que la fermeture affichera les variables de la fonction externe lorsqu'elle est appelée, même une fois l'exécution de la fonction externe terminée, la fermeture peut toujours accéder et faire fonctionner les variables de la fonction externe.

L'implémentation de la fermeture en Python est simple et claire Grâce au mécanisme d'imbrication de fonctions et de référencement de variables externes, la fonction a une capacité de mémoire et de persistance. C'est l'une des raisons pour lesquelles les fermetures sont largement utilisées en Python.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal