La différence entre un paramètre et un argument
Fonction à plusieurs paramètres
Définir de la valeur par défaut d’un paramètre
La réutilisation du code est une partie indispensable de la programmation dans n'importe quel langage, mais l’augmentation de la taille de votre code rend sa lisibilité et sa maintenance plus difficile.
Par conséquent, il est nécessaire de respecter le principe DRY (« Don’t Repeat Yourself » ou « ne pas se répéter ») pour que votre projet de programmation réussisse. Ce principe consiste à éviter les redondances de code en utilisant une normalisation de données, par exemple les boucles et les fonctions et l’utilisation de variables globales, locales ou non locales.
Les violations de DRY sont généralement appelées des solutions WET qui est un terme courant signifiant (« Write Everything Twice » qui veut dire « tout écrire deux fois ») ou bien (« Write Every Time » qui veut dire « écrire à chaque fois »).
Ce tutoriel comportera en premier lieu les fonctions et leurs différents types d’utilisation, ainsi que l’importance de l’instruction « return », et par la suite, on parlera de la portée des variables (variables globales, locales et non locales).
Dans un langage de programmation, une fonction est un bloc de code organisé et réutilisable contenant une tâche spécifique ou un groupe de tâches associées qui ne fonctionne que lors de son appel. L’appel d’une fonction est défini par toute instruction composée d'un mot suivi d'informations entre parenthèses.
C’est aussi un outil très important à apprendre en programmation, il doit être compris et pratiqué. À partir de cette leçon, on va se concentrer sur les trois types de fonctions : Les fonction intégrées, les fonctions sans paramètres et les fonctions avec paramètres.
L’interpréteur du langage de programmation Python 3 contient des fonctions intégrées ou prédéfinies qui sont toujours disponibles lors de leur appel.
On listera ci-dessous certaines fonctions intégrées essentielles pour votre formation sur les fonctions de Python 3 avec leur définition, ainsi que quelques exemples afin de les clarifier :
abs ( -56.3 )
#nous renvoie le résultat 56.3.
ma_liste = [True, True, True]
all ( ma_liste ) #nous renvoie le résultat True.
ma_liste = [True, False, True]
all ( ma_liste ) #nous renvoie le résultat False.
ma_liste = [True, True, True]
any ( ma_liste ) #nous renvoie le résultat True
ma_liste = [True, False, True]
any ( ma_liste ) #nous renvoie le résultat False
bin ( 120 ) #nous renvoie le résultat '0b1111000'
bin ( -20 ) #nous renvoie le résultat '-0b10100'
bool ( 2==2 ) #nous renvoie le résultat True.
bool ( 2>3 ) #nous renvoie le résultat False.
callable ( print ) #nous renvoie le résultat True.
chr ( 102 ) #nous renvoie le résultat 'f'.
chr ( 37 ) #nous renvoie le résultat '%'.
complex ( 2 , 3 ) #nous renvoie le résultat (2+3j)
complex ( 2.5 , 3/5 ) #nous renvoie le résultat (2.5+0.6j)
dict_nourriture = dict ( Orange = 'Fruit' , carotte = 'Légume' )
#nous permet de créer une nouveau dictionnaire.
dict_nourriture ['Orange'] nous renvoie le résultat 'Fruit'.
divmod ( 7 , 2 ) #nous renvoie le résultat (3, 1).
ma_liste=list('abcde')
list (enumerate ( ma_liste , 1 ))
#nous renvoie le résultat [(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')].
float(3) #nous renvoie le résultat 3.0
hex(120) #nous renvoie le résultat '0x78'.
hex(150*2) #nous renvoie le résultat '0x12c'.
int(3.20) #nous renvoie le résultat 3.
len('https://www.cours-gratuit.com/') #nous renvoie le résultat 30.
ma_liste=list('abcde')
#permet de créer une liste de la chaine de caractères ‘abcde’.
print(ma_liste)
#nous affichera cette liste sous la forme ['a', 'b', 'c', 'd', 'e'].
max(1,2,3,8) #nous renvoie le résultat 8.
min(1,2,3,8) #nous renvoie le résultat 1.
oct(120) #nous renvoie le résultat '0o170'.
oct(130*50) #nous renvoie le résultat '0o14544'.
pow(5,3) #nous renvoie le résultat 125.
print('https://www.cours-gratuit.com/
)
#nous renvoie le résultat https://www.cours-gratuit.com/
type(0.2) #nous renvoie le résultat <class 'float'="">.
En addition des fonctions intégrées, on peut créer nos propres fonctions à l’aide de l’instruction def qui signifie « define » ou « définir », servant à déterminer une fonction.
On notera les points suivants qui seront nécessaires pour construire votre fonction :
3.1. Exemple d’une fonction sans paramètres :
def ma_fonction(): # Définir la fonction par le mot-clé « def ».
print ("Bonjour !") # La tâche ou l’instruction que la fonction doit réaliser.
ma_fonction() # L’appel de la fonction
Bonjour !
Remarque : Python 3 est un langage qui exécute le programme ligne par ligne. Lorsqu'il atteint une ligne, l'interprète sait ce qu'il a fait avant et non ce qu'il fera après. C'est la raison pour laquelle une variable, une classe ou une fonction doit être définie avant d'être utilisée :
ma_fonction()
def ma_fonction():
print ("Bonjour !")
NameError: name 'ma_fonction' is not defined!
Les paramètres sont les noms de variables temporaires dans une fonction. Par ailleurs, l'argument peut être considéré comme la valeur affectée à cette variable temporaire.
Dans une fonction avec paramètres, ces paramètres agissent comme des espaces réservés pour un argument. Prenant comme exemple la fonction suivante :
def présentation(Prénom): # Définir la fonction avec le paramètre « Prénom ».
print ("Bonjour !" \nJe m'appelle "+Prénom)
présentation("Ismail") # L’appel de la fonction avec l’argument « Ismail ».
Bonjour !
Je m'appelle Ismail
« Prénom » est le paramètre de la fonction « présentation (Prénom) ». Ce qui signifie que partout où nous saisissons « Prénom » dans la fonction, il agira comme un espace réservé jusqu'à ce qu’on lui passe un argument, qui est dans notre cas « Ismail ».
Vous pouvez également définir une fonction avec plus d'un paramètre entre ses parenthèses ; tout en les séparant par des virgules.
def addition(a,b,c,d): # Définir la fonction avec les paramètres a, b, c et d.
print (a+b+c+d)
addition(1,3,8,6) # L’appel de la fonction avec les arguments 1, 3, 8 et 6.
18
Pour définir la valeur par défaut d’un paramètre spécifié dans une définition de fonction Python, l’en-tête de la fonction devient sous la forme def <fonction> (<paramètre>= <valeur>) : , alors <valeur> devient une valeur par défaut pour ce paramètre, Et lors de l’appel de cette fonction <fonction>(), le résultat dépendra de la valeur par défaut définie au paramètre.
def addition(a=0,b=0,c=0,d=0):
print (a+b+c+d)
addition()
0
Bien plus avantageux que l’instruction print(), qui sert à afficher le résultat, l’instruction return nous permet de gérer et utiliser ce résultat pour des prochains calculs.
Remarque : La fonction cesse immédiatement d'être exécutée dès qu’elle renvoie une valeur avec l’instruction return.
def minimum(a,b):
if a<=b :
return a
else :
return b
print("cette instruction ne s'affichera pas")
print(minimum(1,3))
print(minimum(2,3)*5)
1 # résultat de l’instruction print(minimum(1,3))
10 # résultat de l’instruction print(minimum(2,3)*5)
Une variable définie en dehors d’une fonction ou dans la portée globale est appelée une variable globale. Elle peut être accessible à l'intérieur ou à l'extérieur de la fonction.
x=1
def addition_par_deux():
print(x+2)
addition_par_deux()
print(x)
3 # résultat de l’instruction addition_par_deux()
1 # résultat de l’instruction print(x)
Remarque : Pour changer la valeur d’une variable globale à l’intérieur d’une fonction, on doit ajouter le mot-clé « global ».
y=1
def addition_par_deux():
y = y+2
print("la valeur de y à l'intérieur de la fonction est : ", y)
addition_par_deux()
print("la valeur de y à l'extérieur de la fonction est : ", y)
UnboundLocalError: local variable 'y' referenced before assignment
y=1
def addition_par_deux():
global y
y = y+2
print("la valeur de y à l'intérieur de la fonction est : ", y)
addition_par_deux()
print("la valeur de y à l'extérieur de la fonction est : ", y)
la valeur de y à l'intérieur de la fonction est : 3
la valeur de y à l'extérieur de la fonction est : 3
Une variable définie à l’intérieur d’une fonction ou dans la portée locale est appelée une variable locale. Elle peut être accessible seulement à l'intérieur de la fonction.
def addition_par_trois():
x=1
print(x+3)
addition_par_trois()
4 # résultat de l’instruction addition_par_trois()
Contrairement à la variable globale, on peut changer la valeur d’une variable locale à l’intérieur d’une fonction.
def addition_par_trois():
x=1
x=x+3 # Changement de la valeur de la variable locale x
print(x)
addition_par_trois()
4 # résultat de l’instruction addition_par_trois()
Une variable définie à l’intérieur d’une fonction qui contient elle-même une autre fonction est appelée une variable non locale. Cette variable ne peut être considérée ni locale ni globale.
On utilise le mot-clé « nonlocal » pour définir une variable non locale.
def carré_et_cube_de_deux ():
x=2
def carré():
nonlocal x
print("le carré de deux est : ", x**2))
carré()
print("le cube de deux est : ", x**3)
carré_et_cube_de_deux ()
le carré de deux est : 4
le cube de deux est : 8
Finalement ! vous venez d’apprendre comment créer et utiliser les fonctions sur Python, ainsi, avec une application progressive de ce tutoriel, vous serait plus apte à élaborer un code DRY qui est gérable avec un minimum de redondances. J'espère que vous avez maintenant tous les outils à adopter pour votre projet Python. Bonne chance à vous !