Leçons du module (1/4)
def et return
Une fonction est un bloc de code réutilisable : vous la définissez une fois avec
def, puis vous l'appelez autant de fois que vous le souhaitez. Les fonctions rendent
le code modulaire, testable et auto-documenté.
Syntaxe de base
def saluta(nome):
return f"Ciao, {nome}!"
saluta("Ada") # 'Ciao, Ada!'defintroduit la fonction, suivie du nom et des paramètres entre parenthèses.- Le
:ouvre le bloc indenté. returnrenvoie une valeur à l'appelant et termine la fonction.
return explicite vs None implicite
Si vous n'écrivez pas return, la fonction renvoie None de manière implicite :
def stampa_e_basta(x):
print(x)
risultato = stampa_e_basta("ciao")
# prints 'ciao'
print(risultato) # NoneUn simple return (sans valeur) renvoie également None, mais peut servir de sortie
anticipée :
def primo_pari(nums):
for n in nums:
if n % 2 == 0:
return n
return None # explicit: communicates "not found"Plusieurs valeurs ? Renvoyer un tuple
Python n'a pas de "paramètres de sortie" : pour renvoyer plusieurs choses, renvoyez un tuple (souvent déballé par l'appelant).
def divisione_resto(a, b):
return a // b, a % b
quoziente, resto = divisione_resto(17, 5)
# 3, 2Docstring : documentation intégrée
La première chaîne à l'intérieur de la fonction est le docstring : elle apparaît dans
help(fn) et comme info-bulle (tooltip) dans les IDE.
def area_cerchio(raggio):
"""Calcola l'area di un cerchio dato il raggio."""
import math
return math.pi * raggio ** 2Portée : variables locales
Les variables définies à l'intérieur d'une fonction sont locales : elles n'existent pas à l'extérieur.
def f():
x = 10
return x
f() # 10
x # NameError: name 'x' is not definedLes fonctions renvoient toujours quelque chose
En Python, si une fonction ne déclare pas explicitement une instruction return ou présente un return vide, elle renverra implicitement la valeur spéciale None. Il n'y a pas de fonctions qui ne renvoient pas de valeur.
À vous de jouer
Définissez une fonction `double(x)` qui renvoie `x * 2`. Appelez-la ensuite avec 7 et assignez le résultat à `result`. Évaluez `result`.
Afficher l'indice
Utilisez return x * 2.
Solution disponible après 3 tentatives
Exercice de révision
Définissez `min_max(nums)` qui renvoie un tuple `(minimum, maximum)`. Appelez-la sur `[3, 1, 4, 1, 5, 9, 2, 6]` et déballez le résultat dans `mn, mx`. Évaluez `(mn, mx)`.
Afficher l'indice
return min(nums), max(nums)
Solution disponible après 3 tentatives
Défi supplémentaire
Définissez une fonction `is_palindrome(text)` qui renvoie `True` si la chaîne d'entrée est égale à sa version inversée, et `False` sinon. Testez la fonction avec `is_palindrome("radar")` comme dernière expression.
Afficher l'indice
Utilisez le tranchage text[::-1] pour inverser la chaîne et la comparer avec le texte d'origine.
Solution disponible après 3 tentatives