Podcast
Questions and Answers
Quel est le rôle de l'instruction 'return' dans une fonction ?
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 ?
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é (_) ?
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 ?
Comment doit-on documenter les fonctions en Python selon PEP 257 ?
Combien de types de paramètres peut-on avoir dans une fonction, comme illustré par l'exemple 'print(a, b, sep=' ; ', end='.
')' ?
Combien de types de paramètres peut-on avoir dans une fonction, comme illustré par l'exemple 'print(a, b, sep=' ; ', end='. ')' ?
Quelle est la différence principale entre une procédure et une fonction en Python ?
Quelle est la différence principale entre une procédure et une fonction en Python ?
Quel mot-clé est utilisé pour définir un sous-programme en Python ?
Quel mot-clé est utilisé pour définir un sous-programme en Python ?
Que doit faire la fonction index
si l'élément n'est pas trouvé dans la séquence ?
Que doit faire la fonction index
si l'élément n'est pas trouvé dans la séquence ?
Quel type de retour a une procédure par définition en Python ?
Quel type de retour a une procédure par définition en Python ?
Quel est le paramètre donné à la fonction index
pour rechercher l'élément dans une séquence ?
Quel est le paramètre donné à la fonction index
pour rechercher l'élément dans une séquence ?
Quelle est l'importance de l'indentation dans la définition d'une fonction en Python ?
Quelle est l'importance de l'indentation dans la définition d'une fonction en Python ?
Comment s'appelle le fichier dans lequel le sous-programme index
est défini ?
Comment s'appelle le fichier dans lequel le sous-programme index
est défini ?
Quel est le but principal des sous-programmes en Python ?
Quel est le but principal des sous-programmes en Python ?
Que se passe-t-il si la ligne a = 5 est supprimée dans une fonction qui utilise la variable a ?
Que se passe-t-il si la ligne a = 5 est supprimée dans une fonction qui utilise la variable a ?
Quel résultat obtient-on lorsque l'on exécute print(a) avant d'associer a = 5 ?
Quel résultat obtient-on lorsque l'on exécute print(a) avant d'associer a = 5 ?
Quel est l'effet de l'instruction global a dans une fonction ?
Quel est l'effet de l'instruction global a dans une fonction ?
Quelle est la caractéristique principale d'un sous-programme récursif ?
Quelle est la caractéristique principale d'un sous-programme récursif ?
Que se passe-t-il lorsque l'on passe une fonction comme argument à une autre fonction ?
Que se passe-t-il lorsque l'on passe une fonction comme argument à une autre fonction ?
Quelle est la forme correcte d'une fonction lambda ?
Quelle est la forme correcte d'une fonction lambda ?
Quel est un usage recommandé lors de l'utilisation de fonctions en Python ?
Quel est un usage recommandé lors de l'utilisation de fonctions en Python ?
Quel attribut est associé à une fonction en Python pour accéder à son nom sous forme de chaîne ?
Quel attribut est associé à une fonction en Python pour accéder à son nom sous forme de chaîne ?
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?
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?
Quelle erreur est générée lorsque l'on appelle la fonction f(b=2) ?
Quelle erreur est générée lorsque l'on appelle la fonction f(b=2) ?
Qu'est-ce qui provoque l'erreur TypeError lors de l'appel de range(stop=5)?
Qu'est-ce qui provoque l'erreur TypeError lors de l'appel de range(stop=5)?
Pour éviter d'obtenir une liste partagée, quel est le meilleur moyen d'initialiser une liste dans la définition d'une fonction ?
Pour éviter d'obtenir une liste partagée, quel est le meilleur moyen d'initialiser une liste dans la définition d'une fonction ?
Quel effet a la fonction f1 sur une liste passée en argument ?
Quel effet a la fonction f1 sur une liste passée en argument ?
Quelle est la signature générale de la fonction range?
Quelle est la signature générale de la fonction range?
Quel est l'effet de l'argument 'end' dans l'appel de print?
Quel est l'effet de l'argument 'end' dans l'appel de print?
Quand peut-on utiliser des arguments positionnels après avoir commencé à nommer des paramètres ?
Quand peut-on utiliser des arguments positionnels après avoir commencé à nommer des paramètres ?
Quel est le résultat de l'exécution de f2 sur une liste ?
Quel est le résultat de l'exécution de f2 sur une liste ?
Quel est le rôle du paramètre *objects dans la fonction print?
Quel est le rôle du paramètre *objects dans la fonction print?
Pourquoi un tuple ne peut-il pas être modifié dans f1 ?
Pourquoi un tuple ne peut-il pas être modifié dans f1 ?
Quelle est la sortie de la fonction f(1, c='x') ?
Quelle est la sortie de la fonction f(1, c='x') ?
Quel est le rôle de *args et **kargs dans une fonction ?
Quel est le rôle de *args et **kargs dans une fonction ?
Quel est l'impact de l'argument flush dans la fonction print?
Quel est l'impact de l'argument flush dans la fonction print?
Que se passe-t-il si la variable globale a est referencée dans f() sans l'instruction 'global' ?
Que se passe-t-il si la variable globale a est referencée dans f() sans l'instruction 'global' ?
Comment la fonction printf utilise-t-elle les arguments nommés supplémentaires?
Comment la fonction printf utilise-t-elle les arguments nommés supplémentaires?
Quelles variables peuvent être modifiées dans un sous-programme ?
Quelles variables peuvent être modifiées dans un sous-programme ?
Que se passe-t-il si plusieurs valeurs sont données à un même argument nommé ?
Que se passe-t-il si plusieurs valeurs sont données à un même argument nommé ?
Quelle fonction renverra une liste contenant les valeurs manipulées lors des appels successifs ?
Quelle fonction renverra une liste contenant les valeurs manipulées lors des appels successifs ?
Que fait la fonction printf lorsqu'elle est appelée avec les arguments spécifiés?
Que fait la fonction printf lorsqu'elle est appelée avec les arguments spécifiés?
Que doit-on faire pour que la fonction f() utilise la variable a globale ?
Que doit-on faire pour que la fonction f() utilise la variable a globale ?
Quelle est la différence entre les fonctions f1 et f2 par rapport aux arguments qu'elles reçoivent ?
Quelle est la différence entre les fonctions f1 et f2 par rapport aux arguments qu'elles reçoivent ?
Un argument clé ne peut être spécifié que lors de l'utilisation de quel type de paramètres ?
Un argument clé ne peut être spécifié que lors de l'utilisation de quel type de paramètres ?
Quel est l'impact de passer un tuple à f1 ?
Quel est l'impact de passer un tuple à f1 ?
Flashcards
Procédure
Procédure
Une procédure est un sous-programme qui n'a pas de résultat.
Fonction
Fonction
Une fonction est un sous-programme qui retourne un résultat.
Sous-programme en Python
Sous-programme en Python
En Python, tout sous-programme est une fonction. Si un sous-programme ne retourne pas de valeur, il retourne None.
Signature d'une Fonction
Signature d'une Fonction
Signup and view all the flashcards
Docstring
Docstring
Signup and view all the flashcards
Mot-clé 'def'
Mot-clé 'def'
Signup and view all the flashcards
Bloc de code d'une fonction
Bloc de code d'une fonction
Signup and view all the flashcards
Instruction 'name == 'main'
Instruction 'name == 'main'
Signup and view all the flashcards
Instruction return
Instruction return
Signup and view all the flashcards
Fonctions en Python
Fonctions en Python
Signup and view all the flashcards
Variable __name__
Variable __name__
Signup and view all the flashcards
Fonctions locales au module
Fonctions locales au module
Signup and view all the flashcards
Absence de surcharge de fonction
Absence de surcharge de fonction
Signup and view all the flashcards
Fonction récursive
Fonction récursive
Signup and view all the flashcards
Récursivité
Récursivité
Signup and view all the flashcards
Passer une fonction comme argument
Passer une fonction comme argument
Signup and view all the flashcards
Fonction anonyme (lambda)
Fonction anonyme (lambda)
Signup and view all the flashcards
Arguments nommés et arguments positionnels: La règle
Arguments nommés et arguments positionnels: La règle
Signup and view all the flashcards
Paramètres avec valeurs par défaut
Paramètres avec valeurs par défaut
Signup and view all the flashcards
Évaluation des valeurs par défaut
Évaluation des valeurs par défaut
Signup and view all the flashcards
Arguments variables '*args' et '**kargs'
Arguments variables '*args' et '**kargs'
Signup and view all the flashcards
Paramètres uniquement nommés
Paramètres uniquement nommés
Signup and view all the flashcards
Fonction index
Fonction index
Signup and view all the flashcards
Une seule valeur par paramètre
Une seule valeur par paramètre
Signup and view all the flashcards
Fonction range
Fonction range
Signup and view all the flashcards
Arguments positionnels en surplus '*args'
Arguments positionnels en surplus '*args'
Signup and view all the flashcards
Arguments nommés en surplus '**kargs'
Arguments nommés en surplus '**kargs'
Signup and view all the flashcards
range(stop=5) provoque TypeError
range(stop=5) provoque TypeError
Signup and view all the flashcards
Fonction max
Fonction max
Signup and view all the flashcards
Fonction print
Fonction print
Signup and view all the flashcards
Fonction printf
Fonction printf
Signup and view all the flashcards
Fonction printf : Description
Fonction printf : Description
Signup and view all the flashcards
Fonction printf : Mécanisme
Fonction printf : Mécanisme
Signup and view all the flashcards
Variable locale
Variable locale
Signup and view all the flashcards
Variable globale
Variable globale
Signup and view all the flashcards
Mot-clé global
Mot-clé global
Signup and view all the flashcards
Modification d'une variable globale
Modification d'une variable globale
Signup and view all the flashcards
Priorité des variables locales
Priorité des variables locales
Signup and view all the flashcards
Portée des variables locales
Portée des variables locales
Signup and view all the flashcards
Paramètres de fonction
Paramètres de fonction
Signup and view all the flashcards
Modification d'un paramètre immutable
Modification d'un paramètre immutable
Signup and view all the flashcards
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
avecrange(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 avecfrom 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.
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.