Python : les sous-programmes
45 Questions
0 Views

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

Quel est le rôle de l'instruction 'return' dans une fonction ?

  • Elle arrête l'exécution de la fonction et retourne une valeur. (correct)
  • Elle ne joue aucun rôle particulier dans la fonction.
  • Elle démarre l'exécution d'une fonction.
  • Elle définit le nom de la fonction.
  • Que signifie 'name' valant 'main' lors de l'exécution d'un fichier ?

  • Le fichier est en cours d'exécution directement et n'a pas été importé. (correct)
  • Le fichier est vide.
  • Le fichier a été importé dans un autre module.
  • Le fichier contient des erreurs de code.
  • Quel est un aspect des fonctions dont le nom commence par un souligné (_) ?

  • Elles sont réputées locales au module. (correct)
  • Elles peuvent être appelées de n'importe où.
  • Elles n'ont pas de paramètres.
  • Elles doivent être appelées avant la fin du programme.
  • Comment doit-on documenter les fonctions en Python selon PEP 257 ?

    <p>Avec une phrase pour l'objectif suivie d'une description détaillée.</p> Signup and view all the answers

    Combien de types de paramètres peut-on avoir dans une fonction, comme illustré par l'exemple 'print(a, b, sep=' ; ', end='. ')' ?

    <p>Deux paramètres positionnels et deux paramètres nommés.</p> Signup and view all the answers

    Quelle est la différence principale entre une procédure et une fonction en Python ?

    <p>Une fonction retourne un résultat, une procédure ne le fait pas.</p> Signup and view all the answers

    Quel mot-clé est utilisé pour définir un sous-programme en Python ?

    <p>def</p> Signup and view all the answers

    Que doit faire la fonction index si l'élément n'est pas trouvé dans la séquence ?

    <p>Lever une exception ValueError.</p> Signup and view all the answers

    Quel type de retour a une procédure par définition en Python ?

    <p>None</p> Signup and view all the answers

    Quel est le paramètre donné à la fonction index pour rechercher l'élément dans une séquence ?

    <p>élément</p> Signup and view all the answers

    Quelle est l'importance de l'indentation dans la définition d'une fonction en Python ?

    <p>Elle permet de distinguer le corps de la fonction de sa déclaration.</p> Signup and view all the answers

    Comment s'appelle le fichier dans lequel le sous-programme index est défini ?

    <p>mon_index.py</p> Signup and view all the answers

    Quel est le but principal des sous-programmes en Python ?

    <p>Permettre la réutilisation du code.</p> Signup and view all the answers

    Que se passe-t-il si la ligne a = 5 est supprimée dans une fonction qui utilise la variable a ?

    <p>Print affiche 10 avant l'exécution de la fonction.</p> Signup and view all the answers

    Quel résultat obtient-on lorsque l'on exécute print(a) avant d'associer a = 5 ?

    <p>Il affiche 10.</p> Signup and view all the answers

    Quel est l'effet de l'instruction global a dans une fonction ?

    <p>Permet d'accéder à la variable a définie en dehors de la fonction.</p> Signup and view all the answers

    Quelle est la caractéristique principale d'un sous-programme récursif ?

    <p>Il contient au moins un appel à lui-même.</p> Signup and view all the answers

    Que se passe-t-il lorsque l'on passe une fonction comme argument à une autre fonction ?

    <p>La fonction transmise est exécutée à l'intérieur de la fonction cible.</p> Signup and view all the answers

    Quelle est la forme correcte d'une fonction lambda ?

    <p>cube = lambda x: x ** 3</p> Signup and view all the answers

    Quel est un usage recommandé lors de l'utilisation de fonctions en Python ?

    <p>Utiliser def pour des fonctions plus complexes.</p> Signup and view all the answers

    Quel attribut est associé à une fonction en Python pour accéder à son nom sous forme de chaîne ?

    <p><strong>name</strong></p> Signup and view all the answers

    Quelle est la signature correcte de la fonction qui calcule l'indice de la première occurrence d'un élément dans une séquence?

    <p>def index(seq, start=0, end=None)</p> Signup and view all the answers

    Quelle erreur est générée lorsque l'on appelle la fonction f(b=2) ?

    <p>TypeError: f() missing 1 required positional argument: 'a'</p> Signup and view all the answers

    Qu'est-ce qui provoque l'erreur TypeError lors de l'appel de range(stop=5)?

    <p>range ne prend pas de paramètres nommés.</p> Signup and view all the answers

    Pour éviter d'obtenir une liste partagée, quel est le meilleur moyen d'initialiser une liste dans la définition d'une fonction ?

    <p>Utiliser une nouvelle liste à chaque fois</p> Signup and view all the answers

    Quel effet a la fonction f1 sur une liste passée en argument ?

    <p>Elle ajoute un élément à la liste.</p> Signup and view all the answers

    Quelle est la signature générale de la fonction range?

    <p>def range(start, stop, step=1)</p> Signup and view all the answers

    Quel est l'effet de l'argument 'end' dans l'appel de print?

    <p>Il détermine le caractère de fin de ligne.</p> Signup and view all the answers

    Quand peut-on utiliser des arguments positionnels après avoir commencé à nommer des paramètres ?

    <p>Jamais</p> Signup and view all the answers

    Quel est le résultat de l'exécution de f2 sur une liste ?

    <p>La fonction n'affecte pas la liste d'origine.</p> Signup and view all the answers

    Quel est le rôle du paramètre *objects dans la fonction print?

    <p>Il représente une liste d'objets à imprimer.</p> Signup and view all the answers

    Pourquoi un tuple ne peut-il pas être modifié dans f1 ?

    <p>Parce qu'il n'est pas un objet mutable.</p> Signup and view all the answers

    Quelle est la sortie de la fonction f(1, c='x') ?

    <p>1 2 x</p> Signup and view all the answers

    Quel est le rôle de *args et **kargs dans une fonction ?

    <p>Récupérer respectivement les arguments positionnels et nommés en surplus</p> Signup and view all the answers

    Quel est l'impact de l'argument flush dans la fonction print?

    <p>Il force le vidage du tampon de sortie.</p> Signup and view all the answers

    Que se passe-t-il si la variable globale a est referencée dans f() sans l'instruction 'global' ?

    <p>La fonction lève une exception d'initialisation de variable.</p> Signup and view all the answers

    Comment la fonction printf utilise-t-elle les arguments nommés supplémentaires?

    <p>Ils permettent d'afficher des options de formatage.</p> Signup and view all the answers

    Quelles variables peuvent être modifiées dans un sous-programme ?

    <p>Les objets mutables comme les listes.</p> Signup and view all the answers

    Que se passe-t-il si plusieurs valeurs sont données à un même argument nommé ?

    <p>Une exception est levée</p> Signup and view all the answers

    Quelle fonction renverra une liste contenant les valeurs manipulées lors des appels successifs ?

    <p>g(1) puis g(2)</p> Signup and view all the answers

    Que fait la fonction printf lorsqu'elle est appelée avec les arguments spécifiés?

    <p>Elle affiche une chaîne de caractères formatée avec des arguments positionnels.</p> Signup and view all the answers

    Que doit-on faire pour que la fonction f() utilise la variable a globale ?

    <p>Utiliser l'instruction 'global' dans la fonction.</p> Signup and view all the answers

    Quelle est la différence entre les fonctions f1 et f2 par rapport aux arguments qu'elles reçoivent ?

    <p>f1 modifie l'argument, f2 le réassigne.</p> Signup and view all the answers

    Un argument clé ne peut être spécifié que lors de l'utilisation de quel type de paramètres ?

    <p>Només seulement</p> Signup and view all the answers

    Quel est l'impact de passer un tuple à f1 ?

    <p>Il soulève une exception lors de l'appel.</p> Signup and view all the answers

    Study Notes

    Python : les sous-programmes

    • Les sous-programmes permettent au programmeur de définir ses propres instructions ou expressions.
    • Une procédure est un sous-programme sans résultat (exemple : print()).
    • Une fonction est un sous-programme qui retourne un résultat (exemples : abs(), randint()).
    • En Python, toute procédure est une fonction qui renvoie None.

    Exemple (fichier mon_index.py)

    • La fonction index(sequence, element) cherche l'indice de la première occurrence de 'element' dans la 'sequence'.
    • Elle prend la 'sequence' et l'élément à chercher en paramètres.
    • La fonction renvoie l'indice de la première occurrence de l'élément.
    • Elle lève une exception (ValueError) si l'élément n'est pas trouvé dans la séquence.
    • Elle utilise une boucle for pour itérer sur la séquence.
    • Elle retourne l'indice de l'élément si elle le trouve.

    Explications

    • Les sous-programmes sont généralement définis dans un fichier .py.
    • En Python, tout sous-programme est une fonction (sauf s'il renvoie explicitement None).
    • La définition d'une fonction commence par le mot-clé def.
    • La signature (première ligne) inclut le nom de la fonction, suivi des paramètres entre parenthèses.
    • Le bloc qui suit (noter les deux-points et l'indentation !) inclut la documentation et les instructions exécutées lorsque la fonction est appelée.
    • La documentation doit suivre les conventions PEP 257.

    Différents types de paramètres

    • Paramètres positionnels : L'association entre les paramètres effectifs et formels se fait grâce à la position.
    • Paramètres nommés : L'association se fait par le nom du paramètre formel.
    • Les paramètres positionnels doivent précéder les paramètres nommés lors d'un appel de fonction.

    Valeur par défaut d'un paramètre

    • On peut donner une valeur par défaut à un paramètre formel. Une fois qu'un paramètre a une valeur par défaut, tous les paramètres suivants doivent aussi avoir une valeur par défaut.
    • Si un paramètre effectif n'est pas fourni lors de l'appel, la valeur par défaut est utilisée.

    Nombre variable de paramètres

    • *args : récupère les arguments positionnels en surplus.
    • **kwargs : récupère les arguments nommés en surplus.

    Paramètres seulement nommés (keyword-only argument)

    • Un paramètre formel qui ne peut pas être initialisé avec un argument positionnel.

    Exercices

    • Problèmes de TypeError avec range(stop=5) dû à l'usage non correct de paramètres nommés. Range ne prend pas de paramètres nommés.

    Mode de passage des paramètres

    • Les paramètres sont passés par référence. Les modifications effectuées sur les objets mutables dans le sous-programme affectent l'objet d'origine dans le programme appelant.

    Nom local et nom global

    • Un nom initialisé dans une fonction est un nom local, et n'existe que pendant l'exécution de la fonction.
    • Si on veut accéder à une variable globale, il faut utiliser le mot-clé global dans la fonction.

    La récursivité

    • Un sous-programme récursif est un sous-programme qui s'appelle lui-même.
    • Il faut définir un cas de base (terminal) et un cas général dans lequel le sous-programme se réappelle avec une taille plus petite de problème.

    Intérêt des sous-programmes

    • Structuration de l'algorithme (raffinage).
    • Compréhensibilité (découpage en morceaux).
    • Factorisation et réutilisation du code.
    • Mise au point plus facile (tests unitaires).
    • Amélioration de la maintenance (localiser les modifications).

    Étapes pour définir un sous-programme

    • Définir la spécification du sous-programme.
    • Définir l'implantation du sous-programme (raffinage).
    • Écrire des programmes de test (test unitaire).

    Conseils sur la définition de sous-programmes

    • Ne pas mélanger le traitement et les interactions avec l'utilisateur dans le même sous-programme.
    • Un sous-programme doit être une "boîte noire".
    • Limiter le nombre de paramètres.
    • Décomposer les sous-programmes trop longs ou complexes en sous-programmes plus petits.
    • Bien documenter les sous-programmes (commentaires).

    Modules

    • Un module est un fichier .py contenant des définitions et des instructions.
    • Les noms qui commencent par un souligné _ ne sont pas importés avec from module import *.
    • Les instructions dans un module sont exécutées une seule fois lors du chargement.

    Paquetage

    • Un paquetage est un dossier contenant des modules et d'autres paquetages.
    • Un fichier __init__.py est nécessaire pour déclarer le dossier comme un paquetage.

    Les fonctions comme données

    • Les fonctions sont des objets en Python.
    • On peut les utiliser comme arguments à d'autres fonctions.
    • Les fonctions lambda sont des fonctions anonymes courtes.

    Calcul d'un zéro d'une fonction continue

    • La méthode de dichotomie pour trouver la racine d'une fonction continue sur un intervalle.

    Décorateur

    • Un décorateur est une fonction qui prend une autre fonction comme argument. Il modifie le comportement de la fonction décorée.

    Décorateur : tracer les appels des fonctions

    • Le module trace permet de tracer les appels des fonctions pour suivre leur exécution.

    Studying That Suits You

    Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

    Quiz Team

    Related Documents

    Description

    Ce quiz explore les sous-programmes en Python, y compris les fonctions et les procédures. Vous apprendrez à définir et à utiliser des sous-programmes, ainsi que leur comportement dans les programmes Python. Testez vos connaissances sur la création et l'utilisation de ces éléments clés de la programmation Python.

    More Like This

    Python Functions Quiz
    60 questions

    Python Functions Quiz

    GenerousChrysoprase avatar
    GenerousChrysoprase
    Python Functions and String Manipulation
    8 questions
    Python Functions Overview
    29 questions

    Python Functions Overview

    EffortlessArtNouveau1257 avatar
    EffortlessArtNouveau1257
    Use Quizgecko on...
    Browser
    Browser