0% ont trouvé ce document utile (0 vote)
2 vues12 pages

Les Fonctions Python

Le document présente les fonctions en Python, en abordant leur définition, les paramètres, le typage indicatif, la portée des variables, ainsi que les fonctions prédéfinies et anonymes. Il explique également la création de modules personnalisés et l'importance de la structure standard avec la fonction main(). Enfin, des applications métiers et des travaux dirigés sont proposés pour illustrer ces concepts.

Transféré par

cheikh kandji
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
2 vues12 pages

Les Fonctions Python

Le document présente les fonctions en Python, en abordant leur définition, les paramètres, le typage indicatif, la portée des variables, ainsi que les fonctions prédéfinies et anonymes. Il explique également la création de modules personnalisés et l'importance de la structure standard avec la fonction main(). Enfin, des applications métiers et des travaux dirigés sont proposés pour illustrer ces concepts.

Transféré par

cheikh kandji
Copyright
© All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Les Fonctions

en Python
Concepts fondamentaux, typage, modules et applications métiers

1. Définition 2. Paramètres 3. Type Hints 4. Portée

5. Built-ins 6. Lambda 7. Modules 8. main()


01
Introduction & Concepts de Base
Qu'est-ce qu'une fonction ? Pourquoi utiliser des fonctions ?
Réutilisabilité
Un bloc de code réutilisable qui effectue une tâche spécifique. Elle
Écrire une fois, utiliser plusieurs fois
peut prendre des entrées (paramètres) et retourner un résultat.

# Syntaxe de base Modularité


def nom_fonction(param1, param2): Découper le code en blocs logiques
"""Docstring optionnelle."""
# corps de la fonction
return résultat
Lisibilité
# Appel de la fonction Nommer clairement chaque action
resultat = nom_fonction(val1, val2)

Débogage
Isoler et tester chaque partie

Convention : noms de fonctions en snake_case — ex: calculer_moyenne(), lire_fichier()


02
Paramètres, Arguments & Retour de Valeur
Positionnels Par défaut

def add(a, b): def saluer(nom, msg='Bonjour'):


return a + b return f'{msg}, {nom}!'
add(3, 5) # → 8 saluer('Alice') # → 'Bonjour, Alice!'

*args **kwargs

def somme(*nombres): def profil(**infos):


return sum(nombres) for k,v in [Link]():
somme(1,2,3,4) # → 10 print(f'{k}: {v}')

Retour multiple avec tuple : Pas de return → None :


def min_max(lst): return min(lst), max(lst) def afficher(msg): print(msg)
03
Le Typage Indicatif (Type Hinting)
Introduit en Python 3.5+ (PEP 484). Améliore la lisibilité et active l'aide des IDEs — mais non obligatoire à l'exécution.

Sans Type Hinting Avec Type Hinting

def calculer_tva(prix, taux): def calculer_tva(


# Que sont prix et taux ? prix: float,
# float ? int ? str ? taux: float = 0.20
return prix * (1 + taux) ) -> float:
return prix * (1 + taux)

Types courants
int / float / str / bool list[int] dict[str, float]
Types primitifs standard Liste d'entiers Dictionnaire str → float

tuple[int, str] Optional[str] Union[int, str]


Tuple typé str ou None (typing) int OU str (typing)

from typing import Optional


def chercher(nom: str) -> Optional[str]:
# retourne str ou None
return base_donnees.get(nom)
04
Portée des Variables (Scope)
Règle LEGB — ordre de recherche d'un nom Python :

Local
L Variables définies dans la fonction courante

Enclosing
E Variables dans les fonctions imbriquées parentes

Global
G Variables au niveau du module (script)

Built-in
B Noms prédéfinis Python (print, len, range…)

Mots-clés global et nonlocal

compteur = 0 # variable globale


def incrementer():
global compteur # déclare qu'on modifie le global
compteur += 1

def externe():
05
Les Fonctions Prédéfinies (Built-in Functions)
Entrées/Sorties Types & Conversion Mathématiques

print() input() int() float() abs() round()

open() str() bool() pow() min()

list() dict() max() sum()

Itérables Objets & Types Fonctionnels

len() range() type() isinstance() map() filter()

enumerate() zip() id() dir() any() all()

sorted() reversed() help()

notes = [14, 17, 12, 19, 8]


print(f'Nb élèves : {len(notes)}, Moy : {round(sum(notes)/len(notes), 1)}')
06
Les Fonctions Anonymes (Lambda)

param1,
lambda : expression
mot-clé
param2
paramètres résultat

Cas d'usage courants Lambda vs def ?

# Tri par clé Lambda si…


etudiants = [('Alice',16),('Bob',14),('Claire',18)]
tries = sorted(etudiants, key=lambda x: x[1]) • Expression simple (1 ligne)
• Utilisé comme argument
# Avec map() et filter()
carres = list(map(lambda n: n**2, range(10))) • Aucun nom nécessaire
pairs = list(filter(lambda n: n%2==0, range(10))) • Usage ponctuel

# Opération rapide
double = lambda x: x * 2
print(double(7)) # → 14
def si…
• Logique complexe
• Réutilisation multiple
• Docstring nécessaire
• Meilleure lisibilité
07
Création & Organisation de Modules Personnalisés
Structure de projet recommandée Différentes formes d'import

mon_projet/ # Importer le module entier


├── [Link] # point d'entrée import calculs
├── [Link] # fonctions mathématiques calculs.calculer_ttc(100)
├── [Link] # fonctions utilitaires
└── [Link] # constantes & config # Importer des fonctions spécifiques
from calculs import calculer_ttc
calculer_ttc(100)

Module [Link] # Alias (pour les noms longs)


import calculs as calc
calc.calculer_ttc(100)
"""Module de calculs financiers."""
# Importer tout (déconseillé !)
TVA = 0.20 # constante du module from calculs import *

def calculer_ttc(prix_ht: float) -> float:


"""Calcule le prix TTC."""
return prix_ht * (1 + TVA)

# [Link] — contrôler l'export public


__all__ = ['calculer_ttc', 'TVA'] # seules ces noms exportés

Un fichier .py = un module. Un dossier avec __init__.py = un package.


08
La Structure Standard : La Fonction main()
Pourquoi if __name__ == '__main__' ? Modèle complet recommandé

"""Module de gestion des notes."""


Script autonome
Exécuter du code uniquement quand le fichier est lancé directement def charger_notes(fichier: str) -> list[float]:
"""Charge les notes depuis un fichier."""
# ...
return []
Module importable
Évite l'exécution lors d'un import par un autre module def calculer_moyenne(notes: list[float]) -> float:
"""Calcule la moyenne."""
return sum(notes) / len(notes) if notes else 0

Testabilité def afficher_rapport(notes: list[float]) -> None:


"""Affiche le rapport complet."""
Les fonctions restent testables indépendamment moy = calculer_moyenne(notes)
print(f'Moyenne : {moy:.2f}')

def main() -> None:


Flux d'exécution :
notes = charger_notes("[Link]")
afficher_rapport(notes)
1. Python charge le module
if __name__ == '__main__':
2. Évalue __name__ main()

3. == '__main__' ? → Oui si lancé directement

4. main() est appelé


09
Applications Métiers par Spécialité
Finance Santé Data Science

def rentabilite(achat, vente): def calcul_imc(poids, taille): def normaliser(data: list):


return (vente- return poids / taille**2 m=min(data); M=max(data)
achat)/achat*100 return [(x-m)/(M-m) for x in
data]

Web IA / ML Système

def valider_email(email: str): def sigmoid(x: float) -> float: def lire_csv(chemin: str):
return "@" in email and "." import math with open(chemin) as f:
in email return 1/(1+[Link](-x)) return [Link]()
10
Travaux Dirigés (TD) & Solutions
TD 1 Calcul de BMI Débutant

Écrire une fonction bmi(poids, taille) qui retourne le BMI et sa catégorie.

def bmi(poids: float, taille: float) -> tuple[float, str]:


imc = poids / taille**2
if imc < 18.5: cat = "Sous-poids"
elif imc < 25: cat = "Normal"
else: cat = "Surpoids"
return round(imc, 2), cat

TD 2 Décorateur Minuterie Avancé

Créer un décorateur @minuterie qui mesure le temps d'exécution de toute fonction.

import time
def minuterie(func):
def wrapper(*args, **kwargs):
debut = [Link]()
res = func(*args, **kwargs)
print(f'{func.__name__}: {[Link]()-debut:.4f}s')
return res
return wrapper
Récapitulatif
Ce qu'il faut retenir
def Lambda
Définir des fonctions nommées, réutilisables, documentées
λ Fonctions courtes anonymes pour map/filter/sorted

Paramètres Modules
Positionnels, par défaut, *args, **kwargs — flex totale Organiser en fichiers .py, contrôler les imports

Type Hints __main__


Annoter les types pour plus de clarté et d'aide IDE Point d'entrée standard, code testable et importable

Portée LEGB
Local → Enclosing → Global → Built-in

"La maîtrise des fonctions est la clé d'un code Python propre, modulaire et professionnel."

Vous aimerez peut-être aussi