Maison > développement back-end > Tutoriel Python > Comment les fonctions Python Lambda gèrent-elles la capture de fermeture et comment puis-je la contrôler ?

Comment les fonctions Python Lambda gèrent-elles la capture de fermeture et comment puis-je la contrôler ?

Barbara Streisand
Libérer: 2024-12-30 15:40:13
original
604 Les gens l'ont consulté

How Do Python Lambda Functions Handle Closure Capture, and How Can I Control It?

Comprendre la capture de fermeture dans les fonctions Lambda

En Python, le comportement particulier des fermetures dans les fonctions lambda a laissé les développeurs perplexes. Cet article explore les subtilités de la capture de fermeture, expliquant exactement ce qui est capturé et comment contrôler le mécanisme de capture.

Le mécanisme de capture

Les fermetures de fonction Lambda capturent les variables de leur portée englobante. Ces variables sont effectivement gelées au moment de la création de la clôture. Dans l'exemple fourni, la fonction lambda capture la valeur de i à partir de la boucle for. Cependant, lorsque i est modifié lors des itérations de boucle suivantes, la valeur capturée reste inchangée dans les fermetures.

Contrôle de la capture

Pour capturer la valeur actuelle d'une variable, plutôt que la valeur finale, un paramètre factice peut être ajouté avec une valeur par défaut. Cette technique force la fermeture à capturer la valeur de la variable au moment de la création de la fermeture.

Dans le code modifié :

for i in [0, 1, 2, 3]:
    adders[i] = lambda a, i=i: i + a  # dummy parameter with default value
Copier après la connexion

Le paramètre factice i a une valeur par défaut de courant i dans la boucle. Par conséquent, chaque fonction lambda capture la valeur de i au moment de sa création, ce qui entraîne le comportement attendu où additionneurs[1](3) renvoie 4.

Conclusion

En comprenant le mécanisme de capture de fermeture en Python, les développeurs peuvent contrôler et manipuler efficacement les fermetures. L'utilisation de paramètres factices avec des valeurs par défaut fournit une méthode robuste pour capturer la valeur actuelle d'une variable, garantissant ainsi l'exécution correcte du code.

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: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
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