La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment.

Présentations similaires


Présentation au sujet: "Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment."— Transcription de la présentation:

1 Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment être sûr de bien se comporter ● Les exceptions ou comment faire face à toutes les situations ● Un peu d'objet ou comment avoir la classe ● Étienne Loks et David Mentré - 25 février 2008

2 Les styles de code : pourquoi ? ● def Range2List(TheRange): """ Turns octet range user input in python list""" TheRange=TheRange.split("-") return range(int(TheRange[0]),int(TheRange[1])+1) ● def octet_range_to_list(octet_range): """Turns an octet range into a python list. Keywords arguments: octet_range – an octet range separed by a dash """ octet_range = octet_range.split("-") return range(int(octet_range[0]), int(octet_range[1]) + 1)

3 Les styles de codes ● Documents de référence : PEP 8 et PEP 257 ● Éléments à prendre en compte (entre autres) : ● indentation : 4 espaces ● longueur de ligne : 79 caractères ● espacement ● langue anglaise ● conventions de nommage

4 Les tests unitaires ● But : s'assurer du fonctionnement correct d'un bout de logiciel ● Modules spécifiques (unittest) mais peut se faire simplement ● Utilisation de assert ● def test_octet_range_to_list(): assert octet_range_to_list(”1-5”) == [1, 2, 3, 4, 5] assert octet_range_to_list(”1-300”) == range(1, 255)

5 Les exceptions : utilisation ● Mécanisme de gestion des erreurs ● try: 1/0 except ZeroDivisionError: print ”Aïe, division par zéro !” ● Gros avantage : si on oublie de gérer l'erreur, elle n'est pas perdue ● Fonctionnement ● while True: try: x = int(raw_input("Please enter a number: ")) break except ValueError: print "Oups ! Nombre invalide. Essaye encore..."

6 Les exceptions : syntaxe ● Il peut y avoir plusieurs exceptions ● import sys try: f = open('myfile.txt') s = f.readline() i = int(s.strip()) except IOError, (errno, strerror): print "I/O error(%s): %s" % (errno, strerror) except ValueError: print "Could not convert data to an integer." except: print "Unexpected error:", sys.exc_info()[0] raise

7 Les exceptions : style ● try... except ● try: octet_range_to_list(”1”) except: print ”La conversion de la plage d'octet s'est mal déroulée” ● Toujours préciser l'exception attendue ● try: octet_range_to_list(”1”) except IndexError: print ”La saisie utilisateur n'est pas une plage d'octet conforme”

8 Bases de programmation objet ● Un objet est une entité que l'on construit par instanciation à partir d'une classe (une « catégorie » ou un « type » d'objet) ● chaine = str(”Ma chaine”) ● class Dice: ”””Un dé à plusieurs faces””” mon_nouveau_de = Dice() un_autre_de = Dice() ● La classe est une espèce de « moule » ● Chaque « instance » est un gâteau produit par le moule

9 Bases de programmation objet : les attributs ● Un objet dispose d'attributs ● attributs : informations dans l'objet, spécifiques à une instance ● class Dice: ”””Un dé à plusieurs faces””” def __init__(self): self.nombre_faces = 6 mon_nouveau_de = Dice() print mon_nouveau_de.nombre_faces ● class Dice: ”””Un dé à plusieurs faces””” def __init__(self, nombre_faces): self.nombre_faces = nombre_faces de_6_face = Dice(6) print de_6_face.nombre_faces piece = Dice(2) print piece.nombre_faces

10 Bases de programmation objet : les méthodes ● Un objet dispose de méthodes (fonctions spécifiques à l'objet) ● import random class Dice: ”””Un dé à plusieurs faces””” def __init__(self, nombre_faces): self.nombre_faces = nombre_faces def rouler(self): ”””Faire rouler le dé””” return random.randint(1, self.nombre_faces) >>> de_6_face = Dice(6) >>> print de_6_face.rouler() 4 >>> print de_6_face.rouler() 2 >>> print de_6_face.rouler() 3 >>> print de_6_face.rouler() 6

11 Pourquoi les objets ● Bases pour programmer correctement et pour pouvoir programmer en équipe ● Un objet est une entitée autonome et opaque ● interface avec l'extérieur au travers des attributs et méthodes ● permet de changer l'intérieur de l'objet sans le dire à tout le monde ⇒ modularité et extensibilité ● Importance des notions de programmation objet : tout (ou presque) est objet en python

12 Conclusion ● Présentez bien votre code ● ça facilite sa relecture par d'autres... ou vous même ;-) ● Faites des tests unitaires ● s'assurer qu'on a rien cassé en faisant des modifications ● Utilisez les exceptions ● mécanisme élégant de gestion des erreurs ● Apprendre les concepts objet ● ce qu'on a vu n'est qu'une première introduction


Télécharger ppt "Présentation python : Épisode 3 ● Comment programmer comme un gentilhomme ? ● Le style de code ou comment bien présenter ● Les test unitaires ou comment."

Présentations similaires


Annonces Google