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 ● >>> message = "Bonjour le monde" >>> def afficheMessage(): message = "Au revoir !" print message >>> afficheMessage() Au revoir ! ● >>> def definiNombre(): nbr = 2 >>> definiNombre() >>> print nbr ● Traceback (most recent call last): File " ", line 1, in NameError: name 'nbr' is not defined
Les fonctions : visibilité (II) ● Les arguments sont vues 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
Les fonctions : exemples ● Arguments et retour de valeur ● def chiffrage(message, decalage): """Chiffrage d'un message ASCII par un décalage.""" message_chiffre = "" for caractere in message: code_ascii = (ord(caractere) + decalage) % 255 message_chiffre += chr(code_ascii) return message_chiffre ● Arguments optionnels ● def chiffrage(message, decalage=5): (...) print chiffrage("Bonjour le monde !") print chiffrage("Bonjour le monde !", 8)
Exemples d'application (I) ● Vérification (basique) de nombre premier ● Aide : ● l'opérateur % : retourne la partie entière d'une division >>> 25 % 5 0 ● Programme : ● i = raw_input("Veuillez entrez un nombre : ") i = int(i) est_premier = True for j in xrange(2, i): if i%j == 0: est_premier = False print str(i) + " n'est pas un nombre premier, il est divisible par " + str(j) if est_premier: print str(i) + " est un nombre premier"
Exemples d'application (II) ● Chiffrage simple de message ● Aide : ● fonction ord : retourne le numéro ascii du caractere en entrée fonction chr : retourne le charactère associé à un numéro ascii ● Programme : ● message = raw_input("Message à chiffrer : ") decalage = int(raw_input("Décalage : ")) message_chiffre, message_dechiffre = "" for caractere in message: code_ascii = (ord(caractere) + decalage) % 255 message_chiffre += chr(code_ascii) print "Message chiffré : " + message_chiffre ● for caractere in message_chiffre: code_ascii = (ord(caractere) - decalage + 255) % 255 message_dechiffre += chr(code_ascii) print "Message déchiffré : " + message_dechiffre
Utiliser ses programmes ● Enregistrer dans un fichier avec une extension.py ● 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 ● chmod u+x chiffrage.py
Les modules ● Import de module ● >>> import math >>> print math.pi >>> 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(' if line.find('http') != -1:... print line,... " href=" class="header">Association Gulliver