"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quelle est la différence entre les fonctions imbriquées et les fermetures en python

Quelle est la différence entre les fonctions imbriquées et les fermetures en python

Publié le 2025-05-02
Parcourir:985

What\'s the Difference Between Nested Functions and Closures in Python?

fonctions imbriquées par rapport aux fermetures en python

Bien que les fonctions imbriquées dans Python ressemblent superficiellement Non-Closures

Les fonctions imbriquées dans Python ne sont pas considérées comme des fermetures car elles n'acceptent pas les exigences suivantes:

Ils n'accèdent pas aux variables locales pour encloser des scopes lorsqu'ils sont exécutés en dehors de la lunette suivante. Make_printer (msg): def imprimante (): imprimer (msg) return imprimante

    Ici, la fonction d'imprimante est une fonction imbriquée dans Make_printer. C'est une fermeture car il fait référence à la variable locale MSG après que Make_printer a renvoyé.
Définition de fermeture

def make_printer(msg):
    def printer():
        print(msg)
    return printer

Dans ce cas, la variable msg est liée à la valeur par défaut lorsque l'imprimante est créée, et elle ne fait référence à aucune variable en dehors de sa propre portée. Par conséquent, ce n'est pas une fermeture.

Conclusion

Les fonctions imbriquées en python qui ne respectent pas la définition de fermeture sont communément appelées «fonctions imbriquées» pour les distinguer des clôtures réelles. Les fermetures peuvent être utiles pour conserver l'état des lunettes d'enfermement, tandis que les fonctions imbriquées non de clôture encapsulent simplement les fonctionnalités dans une portée lexicale.

Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3