Najah.
Mon plan de révision⚡ Défi flash

Informatique · Classes prépa (CPGE) — 1ère année — ECS

Fonctions et portée des variables

Le cours expliqué simplement, les questions que tous les élèves se posent et des exercices type examen national. Programme marocain, gratuit.

📘 Fiche de cours

L'essentiel du cours

Une fonction est un bloc d'instructions nommé, réutilisable, défini par le mot-clé def.

  • Syntaxe : def nom_fonction(parametres): suivi du corps indenté.
  • Retour : L'instruction return termine la fonction et renvoie une valeur. Sans return, la fonction renvoie None.
  • Portée (Scope) :
    • Locale : Variables créées dans la fonction, inaccessibles à l'extérieur.
    • Globale : Variables créées au niveau principal, accessibles partout (mais modifiables uniquement avec global).

Méthodes à maîtriser

  1. Définition et appel : Savoir déclarer une fonction avec des paramètres et l'appeler avec des arguments.
  2. Gestion du return : Distinguer entre une fonction qui affiche (print) et une fonction qui retourne (return).
  3. Analyse de portée : Déterminer la valeur d'une variable selon son emplacement (local vs global).

Exemples corrigés

Exemple 1 : Fonction simple

def carre(x):
    return x * x
print(carre(4)) # Affiche 16

Exemple 2 : Portée

x = 10
def test():
    x = 5
    return x
print(test()) # Affiche 5
print(x)      # Affiche 10 (la variable globale n'a pas changé)

Erreurs fréquentes

  • Oublier l'indentation après le def.
  • Confondre print() (affichage console) et return (utilisation de la valeur dans le programme).
  • Tenter d'accéder à une variable locale en dehors de sa fonction.

🌉 Jisr : les mots du chapitre FR ⇄ AR

Tu as appris les sciences en arabe ? Touche un mot pour voir sa traduction et une explication en darija.

La question que tu n'oses pas poser en classe ? Pose-la à UstadZéro jugement, même en darija, même à minuit. Il t'explique pas à pas et corrige ta démarche. Gratuit.

Défi flash : 4 questions

Sans compte

🎯 Fonctions et portée des variables

1/4

Quelle est la valeur de x après l'exécution de ce code ?

x = 1
def f():
    x = 2
f()

❓ Questions fréquentes

C'est quoi la différence entre un paramètre et un argument ?
  1. Le paramètre est le nom de la variable utilisé dans la définition de la fonction (ex: def f(x):). C'est un emplacement réservé.
  2. L'argument est la valeur réelle que tu passes à la fonction lors de son appel (ex: f(5)). Ici, 5 est l'argument.

💡 À retenir : Le paramètre est le "moule", l'argument est la "matière" qu'on met dedans.

Chno hiya la différence bin return o print f fonction ?
  1. print affiche juste une valeur sur l'écran pour l'utilisateur, mais le programme ne peut pas réutiliser cette valeur.
  2. return renvoie la valeur au programme pour qu'il puisse la stocker dans une variable ou l'utiliser dans un calcul.

💡 À retenir : Utilise return si tu veux faire un calcul avec le résultat, print juste pour afficher.

Kifach n7seb lqima dyal variable ila knt m3erfha f fonction o kharijha ?

Python utilise la règle LEGB (Local, Enclosing, Global, Built-in).

  1. Si tu modifies une variable dans une fonction sans global, Python crée une version locale.
  2. La variable globale reste inchangée.
  3. Si tu veux modifier la globale, utilise le mot-clé global.

💡 À retenir : La priorité est toujours donnée à la variable locale si elle porte le même nom.

Est-ce qu'une fonction peut appeler une autre fonction ?

Oui, c'est tout à fait possible et très courant en programmation. Une fonction peut contenir dans son corps l'appel à une autre fonction préalablement définie. Cela permet de structurer le code en petites tâches simples.

💡 À retenir : La modularité est la clé d'un bon code.

Wach momkin n3ref fonction bla paramètre ?

Oui, une fonction peut ne prendre aucun paramètre. Dans ce cas, les parenthèses restent vides lors de la définition def ma_fonction(): et lors de l'appel ma_fonction().

💡 À retenir : Utile pour des actions répétitives qui ne dépendent d'aucune donnée externe.

Pourquoi mon code affiche None quand j'exécute ma fonction ?

Cela arrive généralement parce que ta fonction ne contient pas d'instruction return, ou que le return n'est pas atteint. Par défaut, Python renvoie None si rien n'est spécifié.

💡 À retenir : Vérifie toujours que ton return est bien indenté et présent.

Est-ce que je peux avoir plusieurs return dans une fonction ?

Oui, mais attention : dès que Python rencontre un return, il quitte immédiatement la fonction. Les instructions situées après ce return ne seront jamais exécutées.

💡 À retenir : Le return est la porte de sortie de la fonction.

Comment modifier une variable globale depuis une fonction ?

Il faut utiliser le mot-clé global suivi du nom de la variable au début de la fonction. Exemple :

x = 0
def increment():
    global x
    x += 1

💡 À retenir : À utiliser avec parcimonie, car cela rend le code plus difficile à déboguer.

C'est quoi la portée d'une variable définie dans une boucle for ?

En Python, les variables définies dans une boucle for ne sont pas locales à la boucle. Elles sont accessibles dans tout le bloc (fonction ou programme) où se trouve la boucle.

💡 À retenir : Contrairement à d'autres langages, Python n'a pas de portée spécifique aux blocs de contrôle.

Est-ce que les paramètres sont obligatoires ?

Oui, si tu définis une fonction avec des paramètres, tu dois fournir le nombre exact d'arguments lors de l'appel, sauf si tu as défini des valeurs par défaut (ex: def f(x=0):).

💡 À retenir : Le respect de la signature de la fonction est crucial.

Pourquoi on utilise des fonctions au lieu d'écrire tout le code à la suite ?

Pour trois raisons :

  1. Réutilisabilité : Écrire une fois, utiliser plusieurs fois.
  2. Lisibilité : Le code est plus clair et mieux organisé.
  3. Maintenance : Plus facile de corriger une erreur dans une fonction que dans un bloc géant.

💡 À retenir : "Diviser pour régner" est le principe de base de l'algorithmique.

Est-ce que je peux passer une fonction comme argument d'une autre fonction ?

Oui, en Python, les fonctions sont des "objets de première classe". Tu peux passer le nom de la fonction (sans parenthèses) comme argument à une autre fonction.

💡 À retenir : C'est une notion avancée mais très puissante pour la flexibilité du code.

✍️ Exercices type examen national

Exercice 1

Écrire une fonction est_pair(n) qui retourne True si n est pair et False sinon. Utiliser cette fonction dans un programme qui demande un entier à l'utilisateur et affiche s'il est pair ou impair.

Voir la correction détaillée : inscription gratuite

Exercice 2

Soit le code suivant :

a = 5
def calcul(b):
    a = 10
    return a + b
print(calcul(3))
print(a)

Expliquez le résultat affiché et pourquoi.

Voir la correction détaillée : inscription gratuite

Exercice 3

Écrire une fonction moyenne(liste) qui prend une liste de nombres et retourne leur moyenne. Si la liste est vide, la fonction doit retourner 0.

Voir la correction détaillée : inscription gratuite

Un prof de Informatique pour aller plus loin

Les cours du soir avec des profs vérifiés arrivent : inscris-toi pour être prévenu(e) en premier.

Être prévenu(e) gratuitement

Autres chapitres de Informatique