Modules et fonctions
Fonctions prédéfinies
Nous avons déjà utilisé des fonctions prédéfinies de Python : print(), input()… elles font partie du module « standard » de Python et sont toujours disponibles. Actuellement Python 3.7.4 possède 69 fonctions de base, vous pouvez les trouver sur la documentation officielle.
Modules
Il est possible d’utiliser d’autres fonctions qui ne sont pas accessibles par défaut.
Pour cela il faut charger des modules.
Il en existe des centaines.
Vous avez peut-être déjà utilisé le module math
qui contient la fonction racine carrée sqrt()
. Voici la liste des modules offciels de Python.
Pour utiliser les fonctions d’un module il faut importer ce module. Pour importer le module math on écrira ceci au début de notre fichier :
import math
Ensuite pour utiliser la fonction sqrt()
on écrira :
math.sqrt()
1) Utilisez le module random et le module math pour tirer au hasard le rayon d’un cercle entre 1 et 9 (random.randrange(1, 10)
) et calculer sa surface avec la valeur de Pi fournie par Python (math.pi
).
L’importation avec from math import *
rend le programme moins lisible car il n’est plus nécessaire de préfixer la fonction avec math
.
Nous utiliserons donc de préférence la méthode ci-dessus.
Fonctions originales
Il est bien sur possible d’écrire ses propres fonctions. Cela permet de simplifier un programme et d’éviter de répéter du code.
Fonction sans paramètres
Voici une fonction simple qui affiche juste « coucou » :
def coucou():
print("Coucou")
Il faut donc utiliser le mot clé def suivi du nom de la fonction avec deux parenthèses et deux points. Ensuite les instructions de la fonction sont indentées.
Pour exécuter le code d’une fonction, il faut appeler cette fonction :
def coucou():
print("Coucou")
coucou()
coucou()
Ici, on appelle deux fois la fonction coucou. Elle affichera donc deux fois « Coucou ».
2) Créez une fonction nombreAleatoire()
qui affiche un entier aléatoire en 1 et 100. Appelez cette fonction cinq fois.
Fonction avec paramètres
Une fonction avec paramètres est une fonction qui a besoin d'un ou plusieurs arguments pour fonctionner. Ils faut les faire figurer entre les parenthèses de la fonction, séparés par des virgules. Voici par exemple une fonction qui calcule le périmètre d’un cercle :
import math
def perimetreCercle(r):
print(2 * math.pi * r)
3) Créez et testez une fonction qui calcule la surface d’un disque.
4) Créez et testez une fonction qui calcule le périmètre et la surface d’un rectangle.
Valeur retournée par une fonction
Il est possible de « récupérer » le résultat d'une fonction plutôt que d'utiliser print()
.
Pour cela, il faut dire à notre fonction de « retourner » quelque-chose avec le mot-clef return
.
Par exemple voici une fonction qui retourne le volume d’une boule :
import math
def volumeBoule(r):
volume = 4/3 * math.pi * r**3
return volume
# Utilisation de la fonction
v = volumeBoule(3)
print("Le volume est", v)
5) Créez et testez une fonction volBoite() qui calcule le volume d’une boite parallélépipédique.
6) Créez et testez une fonction maximum() qui calcule le maximum de trois entiers.
Variables locales, variables globales
Les variables définies à l’intérieur d’une fonction sont dites locales.
C’est à dire qu’elles n’existent qu’à l’intérieur de la fonction.
Par exemple si on utilise la fonction volumeBoule()
précédente, la variable volume n’existe pas à l’extérieur de la fonction :
import math
def volume_boule(r):
volume = 4/3 * math.pi * r**3
return volume
v = volume_boule(3)
print("Le volume est", v)
print(volume)
Ce programme revoie :
Le volume est 113.09733552923254
Traceback (most recent call last):
File "TP4.py", line 9, in <module>
print(volume)
NameError: name 'volume' is not defined
La variable volume n’existe pas.
Une variable définie à l’extérieur d’une fonction est globale.
Elle est visible dans une fonction mais ne peut être modifiée par la fonction pour éviter qu’une fonction ne modifie par erreur une variable.
Il est possible de changer ce comportement en déclarant une variable comme globale dans une fonction.
Ainsi cette variable sera traitée globalement.
Pour déclarer une variable globale, il faut utiliser l’instruction global
.
Voici un exemple pour comprendre cette notion :
def testVariables():
print(a, b)
def modifieVariables():
global b # On déclare b comme globale
b = 2
a = 2 # la variable a locale vaut 2
a = 1
b = 1
testVariables() # Affiche 1 1 car la fonction peut voir les variables globales
modifieVariables()
print(a, b) # Affiche 1 2 car seule b a été déclarée globale et est donc modifiable dans la fonction