Fonctions et procedures en Python

07 Feb 2017 07 Feb 2017 27873 vues ESSADDOUKI Mostafa 7 min de lecture

Les fonctions

Les fonctions permettent d'encapsuler une tâche répétitive pour la réutiliser avec différents paramètres, évitant ainsi la duplication de code. Elles favorisent la modularité en séparant la conception (par un développeur) de l'utilisation (par un autre), comme avec les fonctions natives print(), input() ou range().

Déclaration d'une fonction

Une fonction se définit avec le mot-clé def :

Syntaxe
def nom_de_la_fonction(parametres):
    # Corps de la fonction
    return resultat  # Optionnel
Remarque Une fonction peut renvoyer une valeur à l'aide de l'instruction return. Si aucune instruction return n'est précisée, la fonction renvoie automatiquement la valeur None.

Exemple — Calculer le prix TTC

Calculer le prix TTC à partir d'un prix HT (Hors Taxes) et d'un taux de TVA (20 % par défaut).

def calcul_ttc(prix_ht):
    ttc = prix_ht * (1 + 0.2)
    return ttc

# Utilisation de la fonction
prix = 100.0
print(f"Prix HT: {prix} | TTC: {calcul_ttc(prix)}")
Sortie
Prix HT: 100.0 | TTC: 120.0

Paramètres et arguments

  • Paramètres : Variables listées dans la définition de la fonction.
  • Arguments : Valeurs passées lors de l'appel.
Paramètre par défaut Un paramètre peut recevoir une valeur par défaut dans la signature de la fonction. Si l'argument correspondant n'est pas fourni lors de l'appel, la valeur par défaut est utilisée. Les paramètres avec valeur par défaut doivent toujours être placés après les paramètres obligatoires.

Exemple — TVA par défaut

Calcule le prix TTC à partir d'un prix HT et d'un taux de TVA donné (par défaut 20 %).

def calcul_ttc(prix_ht, tva=0.2):
    ttc = prix_ht * (1 + tva)
    return ttc

prix = 100.0
print(f"Prix HT: {prix} | TTC (TVA = 20%): {calcul_ttc(prix)}")
print(f"Prix HT: {prix} | TTC (TVA = 14%): {calcul_ttc(prix, 0.14)}")
Sortie
Prix HT: 100.0 | TTC (TVA = 20%): 120.0
Prix HT: 100.0 | TTC (TVA = 14%): 114.00000000000001
Astuce — Précision flottante Le résultat 114.00000000000001 est dû à la représentation binaire des flottants en mémoire. Pour afficher proprement, utiliser round(calcul_ttc(prix, 0.14), 2) qui retourne 114.0.

Exemple — Arguments nommés

Python permet de passer les arguments par nom (arguments nommés ou keyword arguments), ce qui rend l'appel plus lisible et permet de les passer dans un ordre quelconque.

prix = 100
montant_1 = calcul_ttc(prix_ht=100, tva=0.1)
montant_2 = calcul_ttc(tva=0.1, prix_ht=100)  # Même résultat, ordre différent

print(montant_1)  # 110.00000000000001
print(montant_2)  # 110.00000000000001

Fonctions anonymes (lambda)

Une fonction lambda (ou « anonyme ») permet de créer une petite fonction en une seule ligne, sans lui donner de nom. Idéale pour des calculs simples et ponctuels. Elle est souvent utilisée avec des fonctions comme map(), filter() ou sorted().

Syntaxe
lambda arguments: expression
Fonction defÉquivalent lambda
def quad(x): return x**2quad = lambda x: x**2
def produit(a,b): return a*bproduit = lambda a, b: a*b
def max2(a,b): return a if a>b else bmax2 = lambda a, b: a if a > b else b

Exemple

quad    = lambda x: x**2
produit = lambda a, b: a * b

print(quad(2))       # 4
print(produit(4, 3)) # 12

# Utilisation avec sorted()
etudiants = [("Alice", 17), ("Bob", 15), ("Carla", 18)]
tries = sorted(etudiants, key=lambda e: e[1], reverse=True)
print(tries)  # [('Carla', 18), ('Alice', 17), ('Bob', 15)]
Sortie
4
12
[('Carla', 18), ('Alice', 17), ('Bob', 15)]

Portée des variables

  • Variable locale : Définie à l'intérieur d'une fonction, elle n'existe que pendant l'exécution de celle-ci.
  • Variable globale : Définie en dehors de toute fonction. Pour la modifier depuis une fonction, il faut utiliser le mot-clé global.
Attention L'utilisation excessive de global est déconseillée car elle rend le code difficile à déboguer et à maintenir. Préférez passer les valeurs en paramètre et récupérer le résultat via return.

Exemple — variable globale

x = 10  # Variable globale

def modifier():
    global x
    x = 20

modifier()
print(x)  # 20
Sortie
20

Exemple — lecture sans global

compteur = 0  # Variable globale

def afficher():
    print(compteur)  # Lecture seule : pas besoin de global

afficher()  # 0

Modules

Un module Python est un fichier contenant du code réutilisable (fonctions, classes, variables) qui implémente une fonctionnalité spécifique. Il permet d'organiser le code de manière modulaire.

Définition Un module a un nom spécifié par le nom de fichier sans l'extension .py. Par exemple, le fichier operations.py définit le module operations.

Exemple — Créer un module

Ce module définit quatre fonctions mathématiques de base, permettant de réaliser des opérations courantes entre deux nombres.

# operations.py  — Module operations

def somme(a, b):
    return a + b

def produit(a, b):
    return a * b

def soustraction(a, b):
    return a - b

def puissance(a, n):
    return a ** n

Importer un module

Pour utiliser les objets définis dans un module depuis un autre fichier, on utilise l'instruction import. Les objets sont ensuite accessibles en préfixant leur nom par celui du module suivi d'un point (.).

import operations

print(operations.somme(5, 7))
Sortie
12

Renommer avec as

Il est possible de donner un alias au module lors de l'importation grâce au mot-clé as. Pratique pour raccourcir les noms longs.

import operations as op

print(op.somme(5, 7))   # 12
print(op.produit(5, 7)) # 35

Importation sélective avec from … import

Pour accéder directement aux objets sans préfixe, on utilise from ... import, qui importe uniquement les éléments souhaités.

from operations import somme, produit

print(somme(5, 7))    # 12
print(produit(5, 7))  # 35
À éviter L'importation from operations import * importe tous les objets du module dans l'espace de noms courant, ce qui peut provoquer des conflits de noms et rend le code moins lisible. À réserver aux cas exceptionnels.
FormeAccèsUsage typique
import operationsoperations.somme()Usage général, clarté maximale
import operations as opop.somme()Modules à noms longs (numpy as np)
from operations import sommesomme()Quelques fonctions précises
from operations import *somme()Déconseillé en production

Module math

Le module math est une bibliothèque standard de Python qui fournit des fonctions et constantes mathématiques avancées. Elle permet d'effectuer des opérations plus complexes que les opérateurs de base (+, -, *, /).

Exemple — Fonctions du module math

import math

print(math.sqrt(16))        # 4.0       — Racine carrée
print(math.pi)              # 3.141592… — Constante π
print(math.factorial(5))    # 120       — Factorielle
print(math.cos(0))          # 1.0       — Cosinus (radians)
print(math.log(10))         # 2.302…    — Logarithme népérien
print(math.ceil(3.2))       # 4         — Arrondi supérieur
print(math.floor(3.9))      # 3         — Arrondi inférieur
print(math.gcd(12, 8))      # 4         — PGCD
Sortie
4.0
3.141592653589793
120
1.0
2.302585092994046
4
3
4
Fonction / ConstanteDescriptionExemple
math.sqrt(x)Racine carrée de xmath.sqrt(9)3.0
math.factorial(n)Factorielle de l'entier nmath.factorial(5)120
math.floor(x)Arrondi à l'entier inférieurmath.floor(3.9)3
math.ceil(x)Arrondi à l'entier supérieurmath.ceil(3.1)4
math.log(x)Logarithme naturel (base e)math.log(math.e)1.0
math.log10(x)Logarithme en base 10math.log10(100)2.0
math.cos(x) / sin(x)Cosinus / Sinus (en radians)math.cos(0)1.0
math.gcd(a, b)Plus grand commun diviseurmath.gcd(12, 8)4
math.piConstante π ≈ 3.14159…math.pi3.141592653589793
math.eConstante e ≈ 2.71828…math.e2.718281828459045
Astuce Pour convertir des degrés en radians (requis par math.cos, math.sin, etc.), utilisez math.radians(deg). Par exemple, math.cos(math.radians(90)) retourne approximativement 0.0.

Discussion (0)

Soyez le premier à laisser un commentaire !

Laisser un commentaire

Votre commentaire sera visible après modération.