[Mise à jour le : 29/2/2024]
and | continue | finally | is | raise |
as | def | for | lambda | return |
assert | del | from | None | True |
async | elif | global | nonlocal | try |
await | else | if | not | while |
break | except | import | or | with |
class | False | in | pass | yield |
En programmation, une fonction est un « sous-programme » permettant d'effectuer des opérations répétitives. Au lieu d'écrire le code complet autant de fois que nécessaire, on crée une fonction que l’on appellera pour l'exécuter, ce qui peut aussi alléger le code et le rendre plus lisible. Wikiversité
# Déclaration def nomfonction(parametre1, parametre2, ..., parametreN) """ Documentation """ # bloc de code return valeur # Appel nomfonction(argument1, argument2, argumentN) # parametre1 <- argument1 etc.
Exemple
def cube(x): # Déclaration de la fonction cube destinée à traiter le paramètre x return x*x*x resultat = cube(2) # resultat = 8 après l'appel de la fonction cube avec comme argument la valeur 2
Exemple
def calculatrice(a,b): return a+b,a*b s,p=calculatrice(2,3) print('somme=',s,'produit=',p) # Résultat : somme= 5 produit= 6
Python ne disposant pas d'accolade pour délimiter les blocs de code, il existe une instruction pass, qui ne fait rien.
Exemple
def foo(): pass
Exemple
# Signature de table(nb, max=10) def table()
Exemple
def mult2(x:int)-> int: return x*2 print(mult2(2)) # résultat : 4
'__main__' est le nom du scope dans lequel le code s'exécute en premier. Le nom d'un module (son __name__) vaut '__main__' lorsqu'il est lu de l'entrée standard, lorsque c'est un script, ou une invite interactive.
Un module peut découvrir s'il est exécuté dans le scope principal en vérifiant son __name__, ce qui permet typiquement d'exécuter du code lorsque le module est exécuté avec python -m mais pas lorsqu'il est importé :
Exemple
# Si le code ci-dessous est enregistré dans un fichier hello.py # Il pourra être exécuté par python -m hello def main(): print("Hello World") if __name__ == "__main__": # execute only if run as a script main()
Résultat dans la console
Pour aller plus loin
# Définition def table(nb, max=10): # si la valeur de max n'est pas précisée alors max prend la valeur 10 par défaut """Fonction affichant la table de multiplication par nb de 1*nb à max*nb max*nb >= 0""" i = 0 while i < max: print(i+1, "*", nb, "=", (i+1)*nb) i = i+1 # Appels table(4,3) # max = 3 table(2) # max = 10
Exemple
Exemple
# Définition def fonc(a,b,c,d=12) # Appel print(fonc(b=6,a=1,c=4)) # Passage des arguments dans un ordre quelconque # Résultat : (1, 6, 4, 12), d conserve sa valeur par défaut
Exemple
# ne faites SURTOUT PAS ça def ne_faites_pas_ca(options={}): "faire quelque chose" # mais plutôt comme ceci def mais_plutot_ceci(options=None): if options is None: options = {} "faire quelque chose"
Exemple
def affiche(*parametres): print(f"J'ai reçu le texte : {parametres} en paramètre.") affiche(12,14,16,18) # Résultat : J'ai reçu le texte : (12, 14, 16, 18) en paramètre.
Exemple
def affiche(**parametres_nommes): print(f"J'ai reçu le texte : {parametres_nommes} en paramètres nommés.") affiche(a=12,b=14,c=16,d=18) # Résultat : J'ai reçu ce texte : {'a': 12, 'b': 14, 'c': 16, 'd': 18} # en paramètres nommés
Lors de l'appel de la fonction, les arguments peuvent être :
Les arguments passés dans les fonctions sont des variables locales. Elles n'existent qu'à l'intérieur de la fonction contrairement aux variables globales déclarées dans le programme principal. Pour plus d'informations, voir “Variables, types numériques et entrées / sorties dans la console”
Python permet de définir des mini-fonctions sur une ligne. Empruntées à Lisp, ces fonctions dites lambda peuvent être employées partout où une fonction est nécessaire.
lambda arg1,arg2,...:instruction de retour
f=lambda x:x*x f(3) # renvoie 9
def image(f): for x in range(-1,10): print(f"{f(x)} : {x}") image(lambda x:x**2 -1) # Résultat : 0 : -1 # -1 : 0 # 0 : 1 etc.
De nombreux langages de programmation ont une fonction spéciale qui est automatiquement exécutée lorsqu'un système d'exploitation commence à exécuter un programme. Cette fonction est généralement appelée main() et doit avoir un type de retour et des arguments spécifiques selon le standard du langage.
L'interpréteur Python exécute les scripts en commençant par le haut du fichier, et il n'y a pas de fonction spécifique que Python exécute automatiquement.
Néanmoins, avoir un point de départ défini pour l'exécution d'un programme est utile pour comprendre le fonctionnement d'un programme. Les programmeurs Python ont mis au point plusieurs conventions pour définir ce point de départ.
print("La variable __name__ renvoie le contexte d'exécution.") print("La valeur de __name__ est:", repr(__name__)) # L'exécution de ce fichier renvoie : La valeur de __name__ est: '__main__'
import methodes # L'exécution de ce fichier renvoie : La valeur de __name__ est: 'methodes'
Exemple
from time import sleep print("This is my file to demonstrate best practices.") def process_data(data): print("Beginning data processing...") modified_data = data + " that has been modified" sleep(3) print("Data processing finished.") return modified_data def read_data_from_web(): print("Reading data from the Web") data = "Data from the web" return data def write_data_to_database(data): print("Writing data to a database") print(data) def main(): data = read_data_from_web() modified_data = process_data(data) write_data_to_database(modified_data) if __name__ == "__main__": main()