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
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)range
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
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)
Les exceptions Mécanisme de gestion des erreurs 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”
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()
Bases de programmation objet : les attributs Un objet dispose d'attributs 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
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()
Conclusion Bases pour programmer correctement et pour pouvoir programmer en équipe Importance des notions de programmation objet : tout (ou presque) est objet en python