Maison > développement back-end > Tutoriel Python > Pourquoi les Lambdas créés dans les boucles font-ils référence au dernier objet ?

Pourquoi les Lambdas créés dans les boucles font-ils référence au dernier objet ?

Patricia Arquette
Libérer: 2024-11-08 17:38:02
original
570 Les gens l'ont consulté

Why Do Lambdas Created in Loops Reference the Last Object?

Personnalisation de la création Lambda dans des boucles

Lorsque vous travaillez avec des listes d'objets et tentez de créer des lambdas dans une boucle qui accèdent aux attributs d'objet, vous pouvez rencontrez un problème où tous les lambdas font référence au dernier objet de la liste.

Pour résoudre ce problème, la clé est de capturer la référence d'objet correcte pour chaque lambda. L'extrait de code suivant fournit une solution améliorée :

lambdas_list = []
for obj in obj_list:
    lambdas_list.append(lambda obj=obj: obj.some_var)
Copier après la connexion

En définissant obj=obj comme argument de mot-clé dans la fonction lambda, vous créez une nouvelle portée pour obj à chaque itération. Cela garantit que chaque lambda capture la référence d'objet correcte, l'isolant des changements dans les itérations de boucle ultérieures.

Par conséquent, lorsque vous parcourez la lambdas_list et appelez chaque fonction, vous obtiendrez les résultats attendus pour chaque objet. dans la obj_list. Cette méthode résout efficacement le problème de tous les lambdas faisant référence au dernier objet de la liste et fournit une solution plus robuste et pythonique.

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!

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