您不能選擇超過 %s 個話題 話題必須以字母或數字為開頭,可包含連接號 ('-') 且最長為 35 個字
此存儲庫已封存,您能瀏覽檔案及複製此存儲庫,但不能推送、建立問題及拉取請求。

01-introduction.rst 2.7 KiB

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)