Présentation python : Épisode 2 Les fonctions Exemples d'application Utiliser ses programmes Les modules Étienne Loks et David Mentré - 28 janvier 2008
Les fonctions : définition Définition d'une fonction def bonjourLeMonde(): print "Bonjour le monde !" bonjourLeMonde() Définition avec un argument, deux arguments, ... >>> def plus_un(x): return x + 1 >>> plus_un(2) 3 >>> def a_plus_b(a, b): return a + b >>> a_plus_b(3, 5) 8 Donnez des noms explicites !
Les fonctions : visibilité Visibilité des variables dans une fonction >>> message = "Bonjour le monde" >>> def afficheMessage(): print message >>> afficheMessage() Bonjour le monde >>> def definiNombre(): nbr = 2 >>> definiNombre() >>> print nbr Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'nbr' is not defined >>> message = "Bonjour le monde" >>> def afficheMessage(): message = "Au revoir !" print message >>> afficheMessage() Au revoir ! >>> print message Bonjour le monde
Les fonctions : visibilité (II) Les arguments sont vus comme des variables locales et les paramètres ne sont pas modifiés >>> def f(x): x = 4 print x >>> a = 2 >>> a 2 >>> f(a) 4 >>> a 2
Exemples d'application (I) Vérification (basique) de nombre premier Aide : l'opérateur % : retourne la partie entière d'une division Programme : def obtenir_diviseurs(nbr): diviseurs = [] for j in range(2, nbr): if nbr % j == 0: diviseurs.append(j) return diviseurs def est_premier(nbr): diviseurs = obtenir_diviseurs(nbr) if not diviseurs: return str(nbr) + " est un nombre premier" msg = str(nbr) + " n'est pas un nombre premier" msg += ", il est divisible par " + str(diviseurs) return msg i = input("Veuillez entrer un nombre : ") print est_premier(i)
Exemples d'application (II) Chiffrage simple de message par décalage de caractère (exemple : rot13) Aide : fonction ord : retourne le numéro ascii du caractere en entrée fonction chr : retourne le charactère associé à un numéro ascii
Utiliser ses programmes Enregistrer dans un fichier avec une extension .py etienne@enomwoyi:~$ python chiffrage.py Le rendre directement executable (sous linux) : entête comprenant le chemin vers l'interpréteur #!/usr/bin/python # -*- coding: utf-8 -*- rendre executable le fichier etienne@enomwoyi:~$ chmod u+x chiffrage.py etienne@enomwoyi:~$ ./chiffrage.py
Les modules Import de module >>> import math >>> print math.pi 3.14159265359 >>> print math.sin(math.pi/2) 1.0 Import de fonctions, de variables d'un module >>> from math import pi, sin >>> print sin(pi/2) __doc__, la fonction dir >>> print sin.__doc__ sin(x) Return the sine of x (measured in radians). >>> dir(math)
En guise de conclusion Avec tout ce que vous avez vu (et un peu de lecture de documentation) vous pouvez faire des programmes (impératifs) Un exemple >>> import urllib2 >>> for line in urllib2.urlopen('http://gulliver.eu.org/'): ... if line.find('http') != -1: ... print line, ... "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> href="http://gulliver.eu.org/" class="header">Association Gulliver</a></td>