fonctions

Les fonctions

Fonction sans paramètre

1. Definition: Une fonction permet d’encapsuler un bloc d’instructions et de lui donnéer un nom:

def ma_fonction():
    # bloc de code ligne 1
    # bloc de code ligne 2

La fonction est déclarée après le mot-clé def.

Choisir un nom qui n’appartient pas à Python (aucune autre fonction porte ce nom dans le langage).

Le nom est suivi de parenthèses () et deux points :

Le bloc de code de la fonction est indenté sous la ligne def ma_fonction

Appel de fonction: On peut ensuite exécuter ce bloc en utilsant ce nom. On dit qu’on appelle cette fonction en écrivant son nom, suivi de parenthèses ().

ma_fonction()

Valeur de retour: Une fonction retourne en général une valeur. Après le mot-clé return

  • Exemple 1 Dans ce script, on definit une fonction qui retourne Hi. Les lignes commençant par le symbole # sont des commentaires, et ne sont pas executées par Python. Elles sont optionnelles.
# definition de la fonction
def hello():
  return 'Hi'

# appel de la fonction
hello()
# 'Hi'

Fonction avec paramètre

Une fonction peut avoir un ou plusieurs paramètres qui permettent de transmettre des valeurs au bloc d’instructions. A l’interieur de la fonction, ces paramètres sont traités comme des variables, mais locales: Elles n’existent pas à l’exterieur du bloc.

Il y a alors une affectation: paramètre = argument

  • Exemple 2 Dans ce script, on definit une fonction qui calcule le carré d’un nombre x.
# definition de la fonction
def carre(x):
  return x**2

# appel de la fonction
carre(5)
# retourne 25

Lors de la déclaration de la fonction, le seul paramètre attendu s’appelera x. Puis lors de l’appel de la fonction carre, l’argument choisi est 5. A l’interieur de la fonction, x vaut 5.

illustration du passage d'argument lors de l'appel de la fonction

illustration du passage d'argument lors de l'appel de la fonction

La valeur de retour est alors 25: l’intruction return x**2 évalue 5**2, soit 25, avant de retourner la valeur.

Observez comme la fonction Python avec paramètre ressemble à la déclaration d’une fonction en mathématiques:

# en math
f(x) = 10 * x + 20

On peut calculer f(x) pour toute valeur de x en remplaçant x dans $10\times x + 20$ par sa valeur. Par exemple, $f(1) = 10\times 1 + 20 = 30$

# en python
def f(x):
  return 10 * x + 20

En python, on appelle cette fonction avec la valeur $x=1$ en écrivant:

f(1)
# retourne 30

Le return correspond au signe = en langage mathématique.

Plusieurs paramètres

Lors de l’appel de la fonction, le ou les arguments passés doivent correspondre aus paramètres attendus. Ils doivent être placés dans l’ordre.

  • Exemple 3: fonction qui calcule la surface d’un rectangle lorsque l’on divise chacun de ses côtés par un même coefficient c. On aura besoin de la longueur de ses côtés x et y (les 2 premiers paramètres de la fonction). Mais aussi de la valeur c:
# definition de la fonction
def calcul_surface(x,y,c):
  S = (x/c) * (y/c)
  return S

# appel de la fonction avec x=20 et y=30, c=1.5
# 20 sera place en premier argument
# 30 sera place en 2e argument
# 1.5 sera placé au niveau du 3e argument

calcul_surface(20,30,1.5)
# retourne 266.667

Importer des fonctions

On peut étendre les fonctions du langage en important des fonctions. Celle-ci sont natives, elles font partie du langage python, mais ne sont pas chargées au démarrage.

L’un des modules très utile est, par exemple, le module math. Celui-ci contient de nombreuses fonctions. Pour importer celle qui transforme le angles de degrés en radians, il faut ajouter la ligne suivante au debut du programme:

from math import radians

Puis, pour l’utiliser, et transformer 45° en radians, on écrira plus loin dans le programme:

angle = radians(45)
print(angle)

Placer un script dans une fonction

Le programme suivant comporte quelques lignes que l’on peut avoir à répéter. Imaginons un robot, chargé de laisser entrer les personnes dont l’age est supérieur ou egal à 18:

age = input('Quel age avez-vous? ')
age = int(age)
if age >18:
    print('Vous pouvez entrer')
else:
    print('Desole, ca ne va pas etre possible')

Il sera plus efficace de placer ces lignes dans une fonction.

Les règles pour écrire une fonction à partir de ce script sont les suivantes:

  • les entrées et variables sont mises en paramètre: il s’agit de age
  • Les print sont remplacés par return
  • Il faut choisir un nom à la fonction, écrit après def
def entrer_en_discotheque(age):
  if age >=18:
      return 'Vous pouvez entrer'
  else:
      return 'Desole, ca ne va pas etre possible'

Lorsque vous executez le programme, … il ne se passe rien. Vous avez seulement chargé la fonction.

Il faut appeler la fonction pour que celle-ci soit executée, par exemple avec:

> entrer_en_discotheque(18)

Voici un exemple d’execution d’une fonction à partir du shell.

1:charger la fonction (executer cellule), 2: appel, 3: sortie

1:charger la fonction (executer cellule), 2: appel, 3: sortie

Son execution cesse lorsqu’elle arrive à l’instruction return. Le programme reprend alors son cours.

Liens

Cours
TP5a Fonctions, applications
TP5b fonctions utiles pour calculer
TP5b boucles et fonctions, traitements automatisés