Aller au contenu

Fonctions#

essentiel

Définition#

def addition(a, b):
    return a + b

def sans_retour():
    print("bonjour")   # renvoie None implicitement

Arguments par défaut#

def saluer(nom, message="bonjour"):
    return f"{message}, {nom}"

saluer("Ana")                  # "bonjour, Ana"
saluer("Ana", message="salut")  # "salut, Ana"

Arguments positionnels vs nommés#

def f(a, b, c):
    ...

f(1, 2, 3)          # positionnels
f(a=1, c=3, b=2)      # nommés, ordre libre
f(1, c=3, b=2)         # mélange autorisé
Pour aller plus loin : Positional-only / keyword-only (/ et *)

Dans les bibliothèques et API strictes, Python permet de verrouiller le mode de passage des arguments :

def f(a, b, /, c, d, *, e, f):
    ...
# a, b : positional-only (avant le '/')
# c, d : positionnels ou nommés
# e, f : keyword-only (après le '*')

args et *kwargs#

Détail complet : args / *kwargs.

def somme(*nombres):
    return sum(nombres)

def config(**options):
    return options

Fonctions lambda#

carre = lambda x: x ** 2
sorted(personnes, key=lambda p: p.age)

Une lambda est une expression à une seule instruction (pas de return, pas d'annotations). Préférer def dès que la logique dépasse une ligne.

Valeur de retour multiple#

def min_max(valeurs):
    return min(valeurs), max(valeurs)   # renvoie un tuple

lo, hi = min_max([3, 1, 4, 1, 5])

Docstrings#

def diviser(a, b):
    """Divise a par b.

    Lève ZeroDivisionError si b vaut 0.
    """
    return a / b

diviser.__doc__   # accès à la docstring
help(diviser)       # affichage formaté