Aller au contenu

Fonctions

Avant d'automatiser notre recherche de distance, on va d'abord rendre notre calcul plus explicite et plus facilement répétable, en l'exprimant sous forme d'une fonction.

Idée de fonction

Les fonctions en programmation sont souvent un peu différentes des fonctions en mathématiques, mais pour le moment, on va considérer qu'elles sont similaires.

Une fonction décrit un calcul sur des valeurs indéfinies, que l'on peut ensuite appliquer sur des valeurs définies.

Par exemple, voici une fonction mathématique f qui est définie comme le carré d'un nombre x :

f:xx2

Ici, x (à gauche de la flèche) est le paramètre ou valeur d'entrée de la fonction, et x2 est le résultat ou la valeur de retour, ou parfois simplement valeur, de la fonction.

Décrit le procédé d'élévation au carré. On peut l'utiliser sur une valeur pour l'élever au carré :

f(2)=22=4

On peut définir l'irradiance à une distance donnée sous forme d'une fonction :

i:x(5535,8x)2

On peut faire l'équivalent en Python

Définir une fonction en Python

Pour définir une fonction en Python, la syntaxe est un peu différente des mathématiques. En voici une partie :

def nom_fonction(paramètres):
    return expression

nom_fonction est le nom de la fonction, paramètres est une liste de noms de valeurs d'entrées séparés par des virugles, et expression la valeur de retour sous forme d'une expression Python qui peut comporter le nom des valeurs d'entrées comme des valeurs, et qui est la vleur de retour.

Le nom de la fonction et des paramètres doivent commencer par une lettre, et ne contenir que des lettres, des chiffres ou des underscode _. On écrit en général le nom d'une fonction ou d'un paramètre sans majuscule, en séparant les mots par des underscore _. On appelle ce format le snake_case.

A noter que le return expression doit être décalé à droite par rapport à la ligne def .... c'est ce qu'on appelle l'indentation. Elle peut être faite avec une tabulation (la touche au dessus de VERR MAJ) ou des espaces, en général 4.

La fonction f:xx2 se définit comme suit en Python :

def f(x):
    return x**2

On préfère en général donner des noms plus explicites aux fonctions et aux paramètres, sans toutefois faire des noms trop longs. Un ou deux mots suffisent en général.

Les fonctions doivent être définies dans l'éditeur (la partie gauche de Basthon par défaut) et non dans la console.

Une fois la fonction définie, appuyez sur le bouton Executer.

Dans la console s'affiche :

>>> # script executed
>>>
Et ... Rien d'autre. Toutefois, si on clique sur script executed, de nouvelles lignes apparaissent :

>>> # script executed
... def f(x):
...     return x*x
>>>  

Qui nous montrent que l'interpréteur Python a bien chargé la définition de nos fonctions depuis l'éditeur.

A chaque fois qu'on modifiera une fonction dans l'éditeur, on devra rééxécuter le programme pour mettre a jour la définition des fonctions dans l'interpréteur.

Calculer avec une fonction en Python

Pour calculer avec une fonction, on fait un appel de fonction, avec la syntaxe suivante :

nom_fonction(valeurs)

Où nom_fonction est une fonction qui a été définie, et où valeurs sont des valeurs séparées par des virgules, au même nombre et dans l'ordre correspondants aux paramètres de la fonction.

Si la fonction f:xx2 a été définie en Python comme :

def f(x):
    return x**2

On peut alors obtenir la valeur de f(2) avec l'expression :

f(2)

Les appels de fonctions sont des expressions. On peut donc les utiliser comme des valeurs dans d'autres expressions :

2 + f(2)

Ou même dans une autre fonction, à condition que la fonction appelé soit définie plus haut dans le code que la fonction appelante.

def carre(x):
    return x*x

def cube(x):
    return x * carre(x)

Exercice

Définissez une fonction Python irradiance(r) qui permet de calculer la valeur de l'irradiance solaire à une distance r, en millions de kilomètres, du soleil.

Appelez ensuite cette fonction pour calculer l'irradiance à la distance de 110 millions de kms.

Bon courage lol.

Définition

def irradiance(r):
    return (5535.8/r)**2

Appel

>>> irradiance(110)
2532.6513752066116