You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

преди 4 години
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. Jouons avec les fonctions
  2. =========================
  3. Introduction
  4. ------------
  5. Reprenons ce qu'on a vu jusqu'ici.
  6. D'une part, on peut créer des variables en les assignant à une valeur::
  7. # Création d'une variable `x` avec la valeur 4
  8. x = 4
  9. D'autre part, on peut définir et appeler des fonctions::
  10. # Définition de la fonction:
  11. def dire_bonjour(nom):
  12. print("Bonjour " + nome
  13. # Appel
  14. dire_bonjour("Max")
  15. # Affiche: "Bonjour Max"
  16. Fonctions en tant que variables
  17. -------------------------------
  18. Il se trouve qu'en Python, on peut assigner des variables à ... des fonctions
  19. .. code-block:: python
  20. # Définition d'une fonction `dire_bonjour_en_français`
  21. def dire_bonjour_en_français(nom):
  22. print("Bonjour " + nom)
  23. # Définition d'une fonction `dire_bonjour_en_anglais`
  24. def dire_bonjour_en_anglais(nom):
  25. print("Hello " + nom)
  26. # Création d'une variable qui pointe sur la fonction française:
  27. ma_fonction_qui_dit_bonjour = dire_bonjour_en_français
  28. # Appel de la fonction:
  29. ma_fonction_qui_dit_bonjour("Max")
  30. # Affiche: Bonjour Max
  31. De façon cruciale, notez que l'on n'a *pas* mis de parenthèses à droite
  32. lorsqu'on a créé la variable `ma_fonction_qui_dit_bonjour`.
  33. On peut donc dire que lorsqu'on définit une fonction avec `def()` et un corps
  34. il y a en réalité deux étapes:
  35. 1. Python stocke le corps de la fonction quelque part
  36. 2. Il crée une variable pointant vers ce corps
  37. En Python, il est assez fréquent d'utiliser de code tel que celui-ci, souvent avec un dictionnaire:
  38. Fonctions en tant qu'argement d'autres fonctions
  39. ------------------------------------------------
  40. On a vu en début de chapitre qu'on peut créé des variables qui pointent
  41. vers des fonctions.
  42. Du coup, rien n'empêche de les passer en *argument* d'autres fonctions.
  43. Par exemple::
  44. def appelle_deux_fois(f):
  45. f()
  46. f()
  47. def crier():
  48. print("Aline !")
  49. appelle_deux_fois(crier)
  50. # Affiche:
  51. # Aline !
  52. # Aline !
  53. Fonctions imbriquées
  54. --------------------
  55. On peut aussi définir une fonction dans une autre fonction::
  56. TODO
  57. Fonctions retournant des fonctions
  58. ----------------------------------
  59. Enfin, on peut retourner une fonction depuis une autre fonction::
  60. def fabrique_fonction_qui_additionne(n):
  61. def fonction_résultat(x):
  62. return x + n
  63. return fonction_résultat
  64. additionne_2 = fabrique_fonction_qui_additionne(2)
  65. y = additionne_2(5)
  66. print(y)
  67. # Affiche: 7
  68. Un autre paradigme
  69. -------------------
  70. Le fait qu'on puisse traiter les fonctions comme n'importe quelle
  71. autre valeur (c'est-à-dire les assigner à des variables, les passer
  72. en argument et les retourner)