Fonctions  Les fonctions permettent de reproduire la même tâche sur des donnée

Fonctions  Les fonctions permettent de reproduire la même tâche sur des données différentes sans avoir à recopier le code.  Elles acceptent des paramètres et retournent des résultats avec le mot-clé return.  En Python, il n’y a pas de distinction entre procédure et fonction : les procédures sont des fonctions qui retournent la valeur None. 2 Fonctions  Les fonctions sont des constructions pour structurer les programmes.  Elles permettent d’utiliser le code à plusieurs endroits d’un programme. 3 def <nom_fonctions>(<liste_paramètres>): … # instructions (lignes indentées)  Le corps d’une fonction peut contenir l’instruction return. Cette instruction termine l'exécution de l'appel de fonction et "renvoie" le résultat à l'appelant.  S'il n'y a pas return, la fonction se termine quand le flux de contrôle atteint la fin de son corps. Elle renvoie l’objet None Fonctions  Un paramètre est une entité nommée dans la définition d’une fonction (ou méthode), décrivant un argument (ou dans certains cas des arguments) que la fonction accepte.  Il n'y a que deux façons de placer des arguments en python: soit grâce à la position des paramètres soit grâce à leur nom 4 Paramètres d’une fonction  Il y a 5 types de paramètres en Python. Les plus utilisés sont : Paramètre positionnel ou nommé (positional or keyword) : Il peut recevoir une valeur soit en utilisant sa position, soit en utilisant son nom Paramètre nommé uniquement (keyword-only) : Il faut obligatoirement nommer le paramètre pour lui donner une valeur Paramètre positionnel à nombre variable (var-positional): Il récupère toutes les valeurs supplémentaires des argument positionnels (dans un tuple) lorsque tous les précédents ont reçu une valeur 5 Paramètres d’une fonction #1ère façon de définir un key_only def fct(pos_key, *var_pos, key_only, **var_key): … # corps de la fonction 6 #2ème façon de définir un key_only def fct(pos_key, *, key_only, **var_key): … # corps de la function Paramètre nommé à nombre variable (var-keyword) : Il récupère (dans un dictionnaire) toutes les valeurs supplémentaires des arguments nommés n'existant pas dans la signature. Paramètres d’une fonction  Il est possible de définir une valeur par défaut pour les paramètres positionnels ou nommés et pour ceux nommés uniquement :  Il faut placer les paramètres ayant des valeurs par défaut après ceux qui n'ont pas de valeurs par défaut. 7 def fct(pk1, pk2="default", *var_p, k_only1, k_only2="default", **var_k) … # corps de la fonction def fct(p_k1, p_k2, p_k3): pass fct(23, p_k2=55, 78) # Erreur fct(23, p_k2=55, p_k3=78) # OK Paramètres d’une fonction 8  Exemples : def fct(p_k1, p_k2, *args): pass fct(p_k1=5, p_k2=10, 3, 4, 5, 6) # Erreur fct(5, 10, 3, 4, 5, 6) # Ok Fonctions 9 def afficher(jour, *numeros, ciel="bleu", **gagnants): print("positionel ou nommé : ", jour) print("var positionel : ", numeros) print(“nommé uniquement : ", ciel) print("var-nommé : ", gagnants) afficher("Lundi", 1, 3, 32, 7, ciel="gris", Asma=344, Ahmed=475) # L’affichage est alors: positionel ou nommé : Lundi var positionel : (1, 3, 32, 7) nommé uniquement : gris var-nommé : {'Asma': 344, 'Ahmed': 475} Les fonctions lambda  Python propose un autre moyen de créer des fonctions courtes limitées à une seule instruction : les fonctions lambda  Elles sont utilisées dans certains contextes, pour lesquels définir une fonction avec def serait plus long et moins pratique.  Exemples : 10 lambda par1, par2, …: instruction de retour lambda x : x*x lambda x : 10 if x >0 else -10 Les fonctions lambda 11 f=lambda x : 10 if x >0 else -10 a = f(5) # a vaut 10 b = (lambda x,y : sum([v for v in range(x,y)]))(2,6) # b vaut 14 Gestion des fichiers  Pour ouvrir un fichier on utilise la fonction : open(nomFichier, mode)  mode est une chaîne optionnelle qui spécifie le mode (par défaut, mode = 'r') : 12 'r' Lecture (read). Pointeur placé en début de fichier 'w' Ecriture (write). Ancien contenu perdu. Fichier créé s’il n’existe pas. 'a' Ajout à la fin (append). Pointeur placé en fin de fichier. Fichier créé s’il n’existe pas. 'r+' Lecture et écriture. Pointeur placé en début de fichier 'w+' Lecture et écriture (write). Ancien contenu perdu. Fichier créé s’il n’existe pas. 'a+' Ajout et lecture. Pointeur placé en fin de fichier. Fichier créé s’il n’existe pas. Ouverture et fermeture d’un fichier  open( ) renvoie un objet utilisé pour manipuler le fichier.  La fonction open( ) lance une erreur d’exécution de type FileNotFoundError quand le fichier spécifié n’est pas trouvé.  Il est possible de capturer cette erreur dans un bloc try…except (voir chapitre suivant) 13 f = open('topics.txt') # équivalent à f = open('topics.txt', 'r') f = open('topics.txt', 'w') # ouvrir le fichier en écriture Ouverture et fermeture d’un fichier  Après utilisation (lecture/écriture) il faut fermer le fichier avec f.close()  L’instruction with garantit la fermeture du fichier automatiquement après son utilisation. 14 with open("data.txt", "r") as fichier : print (fichier.read()) Gestion des fichiers  Méthodes en mode lecture : f.read() : renvoie une chaîne avec le contenu du fichier f.readline() : chaque appel renvoie une ligne du fichier f.readlines() : renvoie une liste avec les lignes du fichier  Les « lignes » ont toujours '\n' à la fin  Exemple : Itérer sur les lignes d'un fichier 15 f = open('data.txt') for ligne in f : print(ligne, end='') f.close() Gestion des fichiers  Méthodes en mode écriture ('w'/'a') : f.write(s) : écrit la chaîne s dans le fichier et renvoie le nombre de caractères écrits. f.writelines(liste) où liste est une liste de chaînes : écrit les chaînes dans le fichier (le '\n' n'est pas ajouté automatiquement)  En modalité 'w', ces méthodes écrasent le contenu du fichier !  f.seek(position) change la position de lecture/écriture dans le fichier. 16 Chemins de fichier  Il existe plusieurs méthodes pour manipuler le chemin (path) d’un fichier  Exemples : 17 import os p = "D:\\Nahla\\Travail\\Python\\tests\\voit.py" s= os.path.dirname(p) # s vaut 'D:\\Nahla\\Travail\\Python\\tests' s= os.path.basename(p) # s vaut 'voit.py‘ p= 'D:\\Nahla' s= os.path.join(p, "func.py") # s vaut 'D:\\Nahla\\func.py' tup= os.path.split(p) # tup vaut #('D:\\Nahla\\Travail\\Python\\tests', 'voit.py') s= os.path.abspath(".") PROGRAMMATION OBJET 18 Classe et objet  Une classe est la description d'une famille d'objets qui ont la même structure et les mêmes comportements. Une classe est une sorte de moule à partir duquel sont générés les objets.  Une classe est constituée : d'un ensemble de variables (attributs) qui décrivent la structure des objets ; d'un ensemble de fonctions (méthodes) qui sont applicables aux objets, et qui décrivent leur comportement. 19 Objet  L‘état d'un objet : regroupe les valeurs instantanées de tous ses attributs évolue au cours du temps est la conséquence de ses comportements passés  Une classe est une abstraction, elle définit une infinité d'objets. Un objet est caractérisé par un état, des comportements et une identité  En Python, les attributs d’un objet d’une classe sont par défaut dynamiques.  On peut initializer une partie (ou tous) les attributes dans la méthode __init__() de la definition de la classe 20 21 # Définition d'une classe class Voiture : def __init__ ( self , marque="aucune" , couleur="aucune" , reserves=0): self.marque = marque self.couleur = couleur self.reserveEssence = resreves # Objet ma_voiture = Voiture() #Etat ma_voiture.marque = "punto" ma_voiture.couleur = "grise" ma_voiture.reserveEssence = 30  Exemple :  Le comportement d’un objet regroupe toutes ses compétences, il décrit les actions et les réactions d'un objet. Il se représente sous la forme de méthodes  Exemple : 22 class Voiture : def __init__ ( … ) : … def demarrer (self) : print("je démarre") def arreter(self) : print("Je m'arrête") ma_voiture = Voiture() # Comportement ma_voiture.demarrer() ma_voiture.arreter() uploads/Philosophie/ seancedu-6-11-2020.pdf

  • 69
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager