Dans cette vidéo, il est indiqué qu'il existe 2 types de fonctions
* celle qui retourne une valeur
* celle qui ne retourne rien
Mais en réalité on est bien d'accord qu'une fonction retourne forcément quelque chose non ? (à minima `None` si jamis aucun return n'est spécifié) ?
Parce que pour le coup, le code suivant me retourne bien `None`
```
print(print("test"))
>>> "test"
>>> None
```
Introduction aux fonctions
Les fonctions sont très importantes en programmation, et si vous avez déjà suivi quelques cours de maths dans votre vie, ça devrait vous rappeler quelque chose.
Nous avons déjà utilisé plusieurs fonctions à travers la formation, comme print, type ou encore input par exemple.
On va pouvoir faire principalement deux choses avec les fonctions :
Alléger et réutiliser notre code : si on a du code qu'on utilise très souvent, plutôt que de le copier coller à plusieurs endroits, on va pouvoir le mettre dans une fonction et appeler cette fonction pour l'exécuter
Segmenter notre code et éviter d'avoir tout à l'intérieur d'un même fichier.
Dans la partie sur les modules, vous verrez qu'avec les fonctions, on va surtout commencer à mieux organiser notre code pour qu'il soit plus facile à lire et à modifier.
On distingue deux types de fonctions : les fonctions sans valeur retour et les fonctions avec valeur retour.
Les fonctions sans valeur retour vont juste exécuter une action, comme la fonction print qu'on utilise pour afficher du texte, ou une fonction qu'on pourrait créer pour ajouter un utilisateur à une base de données par exemple.
Ces fonctions ne nous retournent rien.
On les utilise uniquement pour exécuter le code qu'elles contiennent.
Pour créer une fonction, on va utiliser le mot clé def, qui est le raccourci de define, qui veut dire définir.
defnom_de_la_fonction():print("Je suis une fonction")
Au niveau de la syntaxe, on retrouve le mot def, puis le nom de la fonction suivi par deux parenthèses. Ces parenthèses sont obligatoires, même si elles ne contiennent aucune valeur. Si vous ne les mettez pas, Python retournera une erreur.
On retrouve ensuite les deux éléments constitutifs d'un bloc d'instructions, les deux points et l'indentation, qui permettent de spécifier le code qui va appartenir à la fonction.
!!!note
Quand on crée une fonction, on dit qu'on la définit.
!!!
Une fois qu'une fonction est définie, elle est enregistrée dans notre code et on peut l'appeler tout simplement grâce à son nom.
Pour appeler une fonction, vous devez obligatoirement mettre les parenthèses après le nom de la fonction, même si on ne met rien à l'intérieur. Les parenthèses vont signifier à Python qu'on veut appeler la fonction et exécuter le code qu'elle contient.
En effet, le seul fait de définir une fonction, comme on l'a vu précédemment, ne va pas exécuter le code qu'elle contient. Pour exécuter le code à l'intérieur d'une fonction, il faut l'appeler.
C'est de cette façon qu'on va pouvoir définir une fonction à un seul endroit dans notre script et pouvoir l'appeler par la suite autant de fois que nécessaire.
Dans les prochaines parties, nous allons voir comment créer des fonctions qui peuvent nous retourner des informations, donc des fonctions avec valeur retour.