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 ?
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 ?
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é (_) ?
Comment doit-on documenter les fonctions en Python selon PEP 257 ?
Comment doit-on documenter les fonctions en Python selon PEP 257 ?
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='.
')' ?
Combien de types de paramètres peut-on avoir dans une fonction, comme illustré par l'exemple 'print(a, b, sep=' ; ', end='. ')' ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
Quel est le but principal des sous-programmes en Python ?
Quel est le but principal des sous-programmes en Python ?
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 ?
Que se passe-t-il si la ligne a = 5 est supprimée dans une fonction qui utilise la variable a ?
Signup and view all the answers
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 ?
Signup and view all the answers
Quel est l'effet de l'instruction global a dans une fonction ?
Quel est l'effet de l'instruction global a dans une fonction ?
Signup and view all the answers
Quelle est la caractéristique principale d'un sous-programme récursif ?
Quelle est la caractéristique principale d'un sous-programme récursif ?
Signup and view all the answers
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 ?
Signup and view all the answers
Quelle est la forme correcte d'une fonction lambda ?
Quelle est la forme correcte d'une fonction lambda ?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
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?
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?
Signup and view all the answers
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) ?
Signup and view all the answers
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)?
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 ?
Pour éviter d'obtenir une liste partagée, quel est le meilleur moyen d'initialiser une liste dans la définition d'une fonction ?
Signup and view all the answers
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 ?
Signup and view all the answers
Quelle est la signature générale de la fonction range?
Quelle est la signature générale de la fonction range?
Signup and view all the answers
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?
Signup and view all the answers
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 ?
Signup and view all the answers
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 ?
Signup and view all the answers
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?
Signup and view all the answers
Pourquoi un tuple ne peut-il pas être modifié dans f1 ?
Pourquoi un tuple ne peut-il pas être modifié dans f1 ?
Signup and view all the answers
Quelle est la sortie de la fonction f(1, c='x') ?
Quelle est la sortie de la fonction f(1, c='x') ?
Signup and view all the answers
Quel est le rôle de *args et **kargs dans une fonction ?
Quel est le rôle de *args et **kargs dans une fonction ?
Signup and view all the answers
Quel est l'impact de l'argument flush dans la fonction print?
Quel est l'impact de l'argument flush dans la fonction print?
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' ?
Que se passe-t-il si la variable globale a est referencée dans f() sans l'instruction 'global' ?
Signup and view all the answers
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?
Signup and view all the answers
Quelles variables peuvent être modifiées dans un sous-programme ?
Quelles variables peuvent être modifiées dans un sous-programme ?
Signup and view all the answers
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é ?
Signup and view all the answers
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 ?
Signup and view all the answers
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?
Signup and view all the answers
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 ?
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 ?
Quelle est la différence entre les fonctions f1 et f2 par rapport aux arguments qu'elles reçoivent ?
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 ?
Un argument clé ne peut être spécifié que lors de l'utilisation de quel type de paramètres ?
Signup and view all the answers
Quel est l'impact de passer un tuple à f1 ?
Quel est l'impact de passer un tuple à f1 ?
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
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.