Fonctions et portée des variables : Différence entre versions

De WikiMéca
Sauter à la navigation Sauter à la recherche
m (Gdumont a déplacé la page Fonctions vers Fonctions et portée des variables sans laisser de redirection)
 
Ligne 109 : Ligne 109 :
  
 
</pre>
 
</pre>
 +
{{DLMC|Informatique}}
 
[[Catégorie : Bases du langage Python ]]
 
[[Catégorie : Bases du langage Python ]]

Version actuelle datée du 16 août 2019 à 02:50

Une fonction exécute un certain nombre d’instructions pré-définies, à partir de certaines valeurs données (paramêtres ou arguments) et retourne (éventuellement) une valeur.

Définition par le mot-clé def

On peut définir ses propres fonctions à l’aide de la commande def en respectant la syntaxe suivante (attention aux indentations !) :

1 def nom_de_la_fonction(p1 ,p2 ,...) :
2    instruction1 # commentaires 
3    instruction2 # commentaires 
4    ...
5    return ( resultat ) # facultatif

Remarque 1 : On peut créer une fonction sans paramètre : nom_de_la_fonction()

Remarque 2 : La commande return permet de récupérer le résultat et de le stocker dans une variable si nécessaire.

C’est la seule valeur renvoyée par la fonction, mais si besoin cette valeur peut contenir plusieurs expressions. L’instruction return arrête le déroulement de la fonction : le code situé ensuite ne sera pas exécuté. Cependant, on peut construire une fonction sans terminer par cette commande. Dans ce cas, la valeur renvoyée par la fonction est par défaut None. Une fonction peut comporter plusieurs return, par exemple à l’intérieur d’une structure conditionnelle. Dans ce cas, la fonction se finalisera au premier return rencontré, le suite du code ne sera pas compilée. Remarque 3 : On peut définir des paramètres par défaut. L’utilisateur n’est alors pas obligé de les donner, ils ont une valeur par défaut. Les paramètres par défaut sont toujours positionnés à la fin.

Par exemple :

1 def formule_politesse (nom , genre =Monsieur ) :
2    print (Veuillez agréer ,, genre , nom , , mes salutations respectueuses .)

Et dans l’interpréteur :

>>> formule_politesse (’Durand ’)
 Veuillez agréer , Monsieur Durand  , mes salutations respectueuses .

 >>> formule_politesse (’Durand  ’, ’Madame ’)
 Veuillez agréer , Madame Durand  , mes salutations respectueuses .

Définition par le mot-clé lambda

On peut aussi utiliser l’instruction lambda qui permet de créer rapidement des fonctions simples (par exemple des fonctions numériques). Par exemple, les lignes suivantes permettent de définir la fonction .

1 f= lambda x : x**2+1

Documentation - docstring

On peut accéder à la documentation d’une fonction à l’aide de la commande help. Lorsqu’on écrit une fonction, elle peut être utilisée par d’autres personnes intervenant dans la construction d’un programme. Il est donc important de commenter cette fonction et en particulier de la documenter. La documentation permet à un utilisateur de comprendre la finalité et l’usage de la fonction. On peut ajouter une documentation entre des triples guillemets et avant le bloc d’instruction. Ce bloc est appelé la docstring de la fonction. On fera bien la distinction entre les commentaires, qui sont plutôt à destination de celui qui écrit ou lit le programme, et la docstring qui est destinée à l’utilisateur du programme.

Exemple : construction d’une fonction qui pour un entier p et un entier N donnés, affiche la table de multiplication par p de 1 à N.

1 def table (p,N) :
2    """ Fonction écrivant la table de multiplication par p de 1 a N"""
3    i=1 # initialisation du compteur i
4    while i <=N :
5        print (p," * ", i, " = ", p*i)
6        i=i+1

La docstring de la fonction est en ligne 2. Dans l’interpréteur :

>>> table (3 ,4)
3*1=3
3*2=6
3*3=9
3*4=12
>>> help ( table )
 table (p,N)
 Fonction écrivant la table de multiplication par p de 1 a N

Portée des variables

Fréquemment, de nouvelles variables sont définies et utilisées dans le bloc d’instructions d’une fonction. Néanmoins, celles-ci ne sont pas référencées au niveau global. En effet, chaque fonction possède sa propre table de référencement, ce qui permet d’en limiter la portée. Autrement dit, leur contenu est inaccessible depuis l’extérieur de la fonction et en particulier au niveau de l’interprète de commande. De telles variables sont qualifiées de locales, par opposition aux variables globales, dont le contenu est accessible à tout niveau.

Exemple :

1  def f(): 
2      b = a # définition d'une variable locale b 
3      return b

Dans l'interpréteur :

>>> a = 1 # définition d'une variable globale a

>>> f()   # execution de f
1

>>> b 
NameError: name 'b' is not defined

Si on souhaite modifier le contenu d’une variable globale à l’intérieur du bloc d’instructions d’une fonction, il faut utiliser l’instruction global pour déclarer celles des variables qui doivent être traitées globalement.

Exemple :

1 def h(): 
2     global a # déclaration d'une variable globale 
3     a = 2 
4     return a

Dans l'interpréteur :

>>> h() 
2

>>> a    # la variable globale définie ligne 9 a bien été modifiée 
2

Autres pages de la catégorie "Informatique"

Pages relatives à l'informatique en CPGE scientifiques.

Bases du langage Python

Algorithmes et méthodes numériques‎