Dans la signature en plus des paramètres formels, on peut utiliser les caractères / et *...

Rappels :

En Python, lors de l'appel d'une fonction, les paramètres effectifs peuvent être transmis de deux manières principales : le passage de paramètres positionnels et le passage de paramètres nommés. 

Dans le passage positionnel, les paramètres effectifs sont transmis à la fonction dans le même ordre que les paramètres formels sont définis dans la signature de la fonction. Par exemple, si une fonction prend trois paramètres a, b et c, lors de l'appel de la fonction, les valeurs correspondantes doivent être passées dans cet ordre : ma_fonction(1, 2, 3)

En revanche, dans le passage de paramètres nommés, chaque paramètre effectif est précédé du nom du paramètre auquel il est destiné. Cela permet de spécifier les valeurs des paramètres dans n'importe quel ordre, à condition de nommer chaque paramètre effectif : ma_fonction(b=2, a=1, c=3).

Utilisation des caractères / et * :

Le caractère '/' est utilisé pour délimiter les paramètres positionnels. Tout ce qui précède le '/' dans la liste des paramètres est considéré comme des paramètres positionnels obligatoires. Cela signifie que ces paramètres doivent être fournis lors de l'appel de la fonction, et ils sont positionnés dans l'ordre dans lequel ils sont définis. Par exemple :

def ma_fonction(a, b, /, c):
    print(a, b, c)

ma_fonction(1, 2, 3)  # Correct
ma_fonction(1, 2, c=3) # Correct
ma_fonction(a=1, b=2, c=3) # Incorrect

Le caractère '' est utilisé pour délimiter les paramètres nommés. Tout ce qui suit '*' dans la liste des paramètres est considéré comme des paramètres nommés. Cela signifie qu'ils peuvent être fournis lors de l'appel de la fonction en utilisant leur nom, et leur ordre n'a pas d'importance. Par exemple :

def ma_fonction(a, b, *, c): print(a, b, c) ma_fonction(1, 2, c=3) # Correct
ma_fonction(1, 2, 3) # Incorrect

On peut combiner l'utilisation de ces deux caractères :

def ma_fonction(a, b, /, c, *, d, e):
    print(a, b, c, d, e)

ma_fonction(1, 2, 3, d=4, e=5) # Correct





Modifié le: mercredi 17 avril 2024, 07:58