Méthodologie de la Programmation
Notes de cours - Séance II

Scope

a = 5 # global def fct(arg): b = "foo" r = b * (a + arg) # ici a est accessible a = 10 return r fct(42) # b et r ne sont plus accessibles ici # mais ça plante car a est une variable local à fct
a = 5 # global def fct(arg): global a b = "foo" r = b * (a + arg) # ici a est accessible a = 10 return r fct(42) # b et r ne sont plus accessibles ici # ici a vaut 10

Passage des arguments

def f (lst1, lst2): lst1 = [1, 2, 3] # affectation d'une nouvelle liste lst2.append(13) # ajout d'élément en place a = [0, 1, 0, 1] b = [10, 11, 12] print(a) # [0, 1, 0, 1] print(b) # [10, 11, 12] f(a, b) print(a) # [0, 1, 0, 1] print(b) # [10, 11, 12, 13]

Arguments par défaut

def get_distance (speed, duration = 1/6): # par défaut, on calcul la distance parcouru en 10 minutes return speed * duration get_distance(50, 0.5) get_distance(130)

Module math

# Pour accéder aux fonctions mathématiques import math # Les fonctions de math requièrent le prefixe math. math.cos(0) 1.0
# Le module math contient aussi des variables math.pi math.e math.inf math.nan math.cos(math.pi)

Créer ses propres modules

#module.py """ On met généralement ici un peu de documentation sur les fonctions que l'on trouve dans le module (docstring)""" # A l'import du module Python exécute ces instructions dans l'ordre x = 1+2 x = 3*x x
""" De la même manière que pour les modules par défaut, pour accéder au contenu de ses modules on pratique ainsi : """ import module print(module.x)

Mot-clef from

from math import pi x = pi # x = 3.141592653589793
from math import * x = pi # x = 3.141592653589793 y = cos(pi) # -1.0

Dangers de import *

e = 12345 from math import * print(e) # 2.718281828459045, e a été écrasé
e = 12345 import math print(math.e) # 2.718281828459045 print(e) # 12345
# module.py x = 1+2 x = 3*x print(x) # Attention : ici print(x) sera exécuté immédiatement après l'importation du module

Mot-clef as

import math as m print(m.pi)

Rendre un script intéractif

x = input("Entrez quelquechose : ") print("Vous avez entré : " + x)
x = input('Nombre : ') print(x) type(x) # x est une string et doit être casté si on veut l'utiliser comme un nombre x = int(x) type(x) # int

Importer des fonctions

#module.py """ fonctions mathématiques inutiles """ # n est un "paramètre" de la fonction. # lorsque la fonction sera appellée elle prendra un "argument" affecté à n. def increment(n): # x est une variable locale qui disparait après le "return" x = n+1 return x # Header de la fonction def get_pieds(hauteur_en_pouces): # Corps de la fonction return hauteur_en_pouces // 12
import module print(module.increment(5)) # 6

Scope des modules

#module.py def modifier_globale(n): global b b = n
import module b = 42 module.modifier_globale(227) print(b) # 42