#Python : utiliser une expression lambda

Il arrive parfois qu’on ait besoin de passer un argument à une méthode activée par l’option command du widget Button, tout simplement parce que cette méthode peut-être utilisée par différents boutons.

Mais le problème est que l’option command du widget Button n’accepte pas d’instructions… Ou plutôt, elle les accepte mais cela provoque l’invocation immédiate de la fonction ou de la méthode. Comme les parenthèses sont présentes, le bouton n’a plus de pouvoir sur l’option command tant et si bien que la fonction ou la méthode entre en action. C’est le cas dans cet exemple (ligne en surbrillance).

Je passe l’argument import_photos à la méthode self.importer ce qui a pour effet de « shunter » le bouton. La fonction est appelée sans que je le souhaite :

lambda

Comment faire alors? Eh bien, il suffit d’utiliser une expression lambda. Une expression lambda est capable d’invoquer une fonction ou une méthode nécessitant qu’on lui passe des arguments. Une expression lambda ne possède pas de nom. Elle est anonyme.

Le clic sur le bouton provoquera l’appel de la fonction ou de la méthode contenue dans l’expression lambda. Je corrige mon code (ligne en surbrillance) et maintenant ça fonctionne!

lambda2

Auteur : Ordinosor

Bienvenue sur Miamondo, mon blog personnel. "Mia mondo", c'est de l'espéranto et ça signifie "Mon monde" en français. Je m'appelle Benoît alias Ordinosor, Français expatrié en Allemagne. Mes centres d'intérêt sont les distributions GNU/Linux, le langage de programmation Python, la science-fiction et l'espéranto.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s