DEV Community

Cover image for Python : Les Fonctions
 Eric Le Codeur
Eric Le Codeur

Posted on • Updated on

Python : Les Fonctions

Le cours accéléré Python est gratuit et sera publié ici sur dev.to. Je publierai un nouvel article tous les deux jours environ. Pour ne rien manquer, vous pouvez me suivre sur twitter : Suivez @EricLeCodeur

Créer vos propres fonctions

Comme vous avez pu le constater jusqu’à présent, Python inclut déjà plusieurs fonctions afin de nous simplifier la vie.

Le même principe va s'appliquer dans votre application, c’est-à-dire qu'il est possible de simplifier votre vie et celle de votre équipe en créant des fonctions réutilisables.

Voici les grandes lignes sur comment créer ses propres fonctions.

Déclaration

Pour créer une fonction vous devez utiliser l’instruction “def” suivit du nom de votre fonction, ajouter les parenthèses () et enfin les deux “:” qui indiquerons le début de votre bloc de code.

def say_hello():
    print("Hello World")
Enter fullscreen mode Exit fullscreen mode

Voilà votre première fonction !

Par contre, ceci n’est que la déclaration, pour la lancer il faut l’appeler de votre code.

say_hello()

# Hello World
Enter fullscreen mode Exit fullscreen mode

L’appel se fait en utilisant le nom de la fonction suivit des parenthèses ()

Arguments

Il est possible de créer une fonction avec un ou des arguments. Les arguments sont un concept très puissant car ils permettent de personnaliser la fonction.

def say_hello(message):
    print(message)

say_hello("Hello all!")

# Hello all!
Enter fullscreen mode Exit fullscreen mode

À noter que le nombre d’argument de déclaration doit être identique au nombre d’argument lors de l’appel. Sinon, Python retournerait une erreur.

Pour éviter cette situation, un argument peut avoir une valeur par défaut. Pour ce faire il faut assigner une valeur à l’argument (argument = valeur par défaut)

def say_hello(message = "Hello World!"):
    print(message)

say_hello()
# Hello World
Enter fullscreen mode Exit fullscreen mode

Ici, l’appel de notre fonction say_hello() n’a pas d’argument. Python va donc utiliser sa valeur par défaut spécifié lors de sa déclaration.

Du coup, avec ce concept il est possible de rendre un argument optionnel.

Multiples arguments

Évidemment il est possible d’avoir plusieurs arguments

def say_hello(message, upper):
    if upper:
        return message.upper()
    else:
        return message

print(say_hello("Hello World", True))
Enter fullscreen mode Exit fullscreen mode

Comme il est également possible d’avoir plusieurs valeurs par défaut

def say_hello(message="Hello", upper=True):
    if upper:
        return message.upper()
    else:
        return message

print(say_hello())
Enter fullscreen mode Exit fullscreen mode

Ici l’appel de la fonction say_hello() est possible sans argument car les deux arguments sont optionnels.

Ordre des arguments quand il y a une valeur par défaut

À noter que les arguments qui ont une valeur par défaut doivent absolument être placés en dernier.

Voici un exemple qui retournera une erreur :

def say_hello(message="Hello", upper):
    if upper:
        return message.upper()
    else:
        return message

print(say_hello(True))
# SyntaxError: non-default argument follows default argument
Enter fullscreen mode Exit fullscreen mode

Le code suivant n’est pas valide et retournera une erreur car certains arguments ont une valeur par défaut mais l’argument “upper” est en dernier et n’a pas de valeur par défaut. Dans cet exemple il serait impossible pour Python de savoir si l’argument True doit être associé à la variable “message” ou “upper”

Nommé un argument

Si une fonction comporte plusieurs arguments elle peut rapidement devenir complexe à lire.

Voici un exemple d’une fonction avec plusieurs arguments:

def create_invoice(sub_total, shipping, taxes):
    print("...code...")

create_invoice(1000, 25, 100)
Enter fullscreen mode Exit fullscreen mode

Lors de l’appel de la fonction il faut spécifier 3 arguments de type nombre. Il devient alors difficile de savoir à quoi servent ces nombres, du coup la lecture du code n’est pas explicite.

Pour éviter cette situation, Python permet de spécifier le nom de l’argument

create_invoice(sub_total=1000, shipping=25, taxes=100)
Enter fullscreen mode Exit fullscreen mode

Comme vous pouvez le constater, cette syntaxe rend la lecture du code beaucoup plus compréhensible.

Cette syntaxe permet également de changer l’ordre des arguments

create_invoice(taxes=100, sub_total=1000, shipping=25)
Enter fullscreen mode Exit fullscreen mode

Une fonction qui retourne une valeur

Une fonction peut être assignée comme valeur à une variable

amount = calc_total(500, 50, 25)
Enter fullscreen mode Exit fullscreen mode

Il est possible pour une fonction de retourner une valeur lors de son exécution. Pour ce faire vous devez utiliser l’instruction “return”

def calc_total(sub_total, taxes, shipping):
    return sub_total + taxes + shipping
Enter fullscreen mode Exit fullscreen mode

Si la fonction n’a pas d’instruction “return” elle va retourner “None”

def say_hello(message):
    print(message)

return_value = say_hello("Hello World!")
print(return_value)

# Hello World
# None
Enter fullscreen mode Exit fullscreen mode

En l’absence de l’instruction “return” la fonction va retourner la valeur “None”

Conclusion

C'est tout pour aujourd'hui, je publierai un nouvel article tous les deux jours environ. Pour être sûr de ne rien rater vous pouvez me suivre sur twitter : Suivre @EricLeCodeur

Discussion (0)