Initialisation des systèmes...

Baptiste.Dev
Retour aux notes
LangagesDébutantSérie : Python

Python : Les fonctions

Définir des fonctions, les arguments (nommés, par défaut, *args/**kwargs), les lambdas et les fonctions comme objets.

2 min de lecture
Mis à jour hier
pythonfonctionsargumentslambdakwargs

Python : Les fonctions

Une fonction se déclare avec def, un : et un corps indenté. Le résultat se renvoie avec return (absent = la fonction renvoie None).


# Définir une fonction

def saluer(nom):
    return f"Bonjour {nom}"
 
saluer("Alice")             # "Bonjour Alice"

Une chaîne juste sous la signature sert de docstring (documentation) :

def carre(x):
    """Renvoie le carré de x."""
    return x * x

# Les arguments

Python offre beaucoup de souplesse sur les arguments.

# Valeur par défaut
def saluer(nom, politesse="Bonjour"):
    return f"{politesse} {nom}"
 
saluer("Bob")                       # "Bonjour Bob"
saluer("Bob", politesse="Salut")    # argument nommé (keyword)

Les arguments nommés rendent l'appel explicite : saluer("Bob", politesse="Salut") se lit tout seul, l'ordre n'importe plus.

Ne mets jamais une valeur par défaut modifiable (def f(liste=[])) : elle est partagée entre tous les appels et se remplit d'un appel à l'autre. Utilise def f(liste=None) puis liste = liste or [] à l'intérieur.


# *args et **kwargs

Pour accepter un nombre variable d'arguments :

def somme(*nombres):            # *args : un tuple de positionnels
    return sum(nombres)
 
somme(1, 2, 3)                  # 6
 
def config(**options):          # **kwargs : un dict de nommés
    return options
 
config(debug=True, port=3000)   # {'debug': True, 'port': 3000}

# Les lambdas

Une fonction anonyme sur une ligne, pour un usage jetable (souvent comme argument) :

carre = lambda x: x * x
carre(5)                        # 25
 
# Cas typique : trier par un critère
personnes = [("Alice", 30), ("Bob", 25)]
personnes.sort(key=lambda p: p[1])      # tri par âge

Au-delà d'une expression simple, préfère un vrai def : c'est plus lisible et ça peut avoir un nom parlant.


# Les fonctions sont des objets

En Python, une fonction est une valeur comme une autre : on peut la stocker, la passer en argument, la retourner.

def appliquer(fonction, valeur):
    return fonction(valeur)
 
appliquer(carre, 4)             # 16 : on passe la fonction elle-même

C'est la base des fonctions d'ordre supérieur (map, filter, sorted(key=...)).


# La suite