Atelier du vendredi 18 avril 2014 par FX
Après un bref rappel des notions abordées aux précédents ateliers de nouveaux éléments fondamentaux du langage ont été présentés:
- le formatage de chaînes analogue au classique printf :
- https://fr.wikipedia.org/wiki/Printf
- print "La somme de %d et %d, ça fait %d, qui est un nombre %s."%(2, 40, 2+40, "positif")
- la définition d'une fonction
- def add(a,b,c):
- return a+b+c
- add(1,10,100) # le résultat est 111
- def meteo(temperature, ciel, date="demain"): # definition de paramètre(s) par défaut
- print date+", le ciel sera"+ciel+" et il fera "+str(temperature)+" °".
- meteo(25,"bleu")
- meteo(22,"nuageux","mardi")
- meteo(28, date="dimanche",ciel="clair") # nommage des paramètres
- def add(a,b,c):
- la fonction str ainsi que la fonction int
- l'une transforme un nombre en une chaine
- l'autre transforme une chaine en nombre
- print int("1")+int("10")+int("100") # le résultat est 111
- la fonction dir() ainsi que la fonction type()
- par exemple : dir(object) ou type(2014)
- la définition d'une classe avec ses méthodes (notamment la méthode init ) et ses attributs ainsi que la création de plusieurs
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# pythonpoo.py
# vendredi 18 avril 2014
# première classe, premières instances (merci FX)
###########################################################
class voiture(object):
# notre première classe
color="rouge"
def couleur(self,color):
return self.couleur
def demarrer(self):
print("vroum-vroum")
return
ferrari=voiture() # création d"une instance
ferrari.couleur ="rouge"
ferrari.demarrer #appel par l'instance
voiture.demarrer(ferrari) # appel par la classe
renault = voiture()
- la méthode repr :
- le module pprint :
- l'option i dans le lancement de Python :
- la notion de liste en compréhension :
Exercise proposé :
On suppose qu'on a la liste suivante :
daltons=[{"nom":"joe","taille":140,"caractere":"teigneux"},
{"nom":"jack","taille":155,"caractere":"idiot"},
{"nom":"william","taille":170,"caractere":"stupide"},
{"nom":"averell","taille":185,"caractere":"abruti"}]
Ecrire une fonction compare_taille qui prenant en argument deux daltons (deux tables de hachage, en fait), comparant leur attribut "taille", et renvoyant :
zéro s'ils sont de même taille
un nombre négatif si le premier est plus petit
un nombre positif si le premier est plus grand
Ecrire aussi une fonction compare_nom prenant en argument deux daltons, comparant leur attribut "nom", et renvoyant :
zéro s'ils sont identiques
un nombre négatif si le premier est avant le second dans l'ordre alphabétique
un nombre positif si le premier est après le second dans l'ordre alphabétique
Exécuter le code suivant pour tester les fonctions :
print daltons
daltons.sort(compare_nom)
print daltons
daltons.sort(compare_taille)
print daltons
# notion de listes en compréhension
liste_en_comprehension = [dalton['nom'] for dalton in daltons]
print liste_en_comprehension
def compare_taille(a, b): return ??????????????????
Un des participants à l'atelier, à précisé d'une part la notion de Duck typing :
et d'autre part le fait qu'en Python les fonctions anonymes (les fameuses lambda) sont plus limitées que les véritables fermetures lexicales ( en anglais : closures) d'autres langages :
Référence de l'ensemble des ateliers Python http://wiki.linux-azur.org/AtelierPYTHON
