Formation I.S.N.

Quelques compléments

La fonction lambda

Nous venons de voir comment créer une fonction grâce au mot-clé def. Python nous propose un autre moyen de créer des fonctions lorsqu’il s’agit de fonctions extrêmement simples, limitées à une seule instruction : la fonction lambda.

La fonction lambda est en général utilisée dans un contexte particulier pour lequel définir une fonction à l’aide du mot-clé def serait plus long et moins pratique.

La syntaxe de cette définition de fonction est la suivante :


			lambda argument 1, argument 2, … : instruction de retour
			

A la différence de la fonction traditionnelle définie par le mot-clé def, cette fonction définie par le mot-clé lambda peut être stockée dans une variable par une simple affectation. L’appel de la fonction lambda se fera alors par cette variable associée aux arguments choisis.



Examinons deux exemples :


		
		

Ici, la fonction lambda ne possède qu’un seul argument : x. L’instruction qu’elle exécute est x*x ce qui conduit au calcul du carré de x. Cette fonction est stockée dans la variable f et lorsqu’on appelle f(5), on appelle en fait la fonction lambda pour x = 5.




		
		

Ici, la fonction lambda possède deux arguments : x et y. L’instruction qu’elle exécute est x+y. Cette fonction est stockée dans la variable s et lorsqu’on appelle s(5,7), on appelle en fait la fonction lambda pour x = 5 et y = 7.

Les modules

Nous avons déjà évoqué rapidement la notion de module sous Python mais sans réellement la définir. Nous avions indiqué que Python intègre par défaut un certain nombre de fonctions, par exemple la fonction print(), la fonction input() et bien d’autres. Mais pour d’autres, plus particulières, il est nécessaire d’importer un module qui les contient.

Un module est en fait un bout de code contenant des fonctions que l’on a enfermées dans un fichier. On emprisonne ainsi des fonctions et des variables ayant toutes un rapport entre elles. Ainsi si l’on veut travailler avec ces fonctionnalités prévues par le module, il suffit d’importer le module et utiliser toutes les fonctions et variables prévues.

Il existe un grand nombre de modules disponibles avec Python sans qu’il soit nécessaire d’installer des bibliothèques supplémentaires. Prenons l’exemple du module math qui, comme son nom l’indique, contient des fonctions mathématiques.

Il existe deux manière d’importer un module.

Par la méthode import

Si l’on saisit import math en début de script, Python vient importer le module math c’est-à-dire qu’il rend accessible toutes les fonctions inclues dans ce module à condition de la préfixer par le nom du module.

Ainsi, si l‘on veut calculer racine carrée positive de 16, il faudrait saisir le script suivant :


		
		

En vérité, lorsqu’on tape import math, cela créé un espace de noms dénommé « math » contenant les variables et les fonctions du module math. Quand on tape math.sqrt(25) on précise à Python que l’on souhaite exécuter la fonction sqrt contenue dans l’espace de noms math. Cela signifie que l’on peut avoir dans l’espace de noms principal une autre fonction sqrt que l’on aura définie nous-même et qui ne rentrera pas en conflit avec celle appartenant à l’espace de noms math.

Par la méthode from...import...

Il existe une autre méthode d’importation qui ne fonctionne pas tout à fait de la même façon. Si nous avons besoin de n’utiliser que la fonction renvoyant la valeur absolue d’un nombre, nous n’importerons par cette méthode que la fonction « valeur absolue ».

Le script sera donc le suivant :


		
		

Cette méthode permet de s’affranchir du préfixe math à chaque appel de la fonction fabs. En revanche, la fonction fabs sera placée au même niveau qu’une fonction appartenant à l’espace de noms principal (comme print() par exemple).

Cette méthode n’autorise donc pas de création d’une autre fonction portant le même nom qu’une fonction existante dans le module importé.



Il est aussi possible d’importer l’ensemble des variables et fonctions d’un module donnée en saisissant « * » à la place du nom de la fonction à importer :