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.
 
 
 
 
 
 

136 rivejä
3.7 KiB

  1. Chapitre 12 - Modules - 1ère partie
  2. ===================================
  3. Un fichier = un module
  4. ------------------------
  5. Et oui, vous faites des modules sans le savoir depuis le début :)
  6. Un fichier `foo.py` correspond *toujours* module `foo`
  7. **Attention: Ce n'est pas tout à fait réciproque. Le module `foo` peut venir d'autre chose
  8. qu'un fichier foo.py.**
  9. Importer un module
  10. ------------------
  11. Ou: accéder à du code provenant d'un *autre* fichier source.
  12. Imaginons un fichier `bonjour.py` contenant seulement une assignation
  13. d'une variable `a` à l'entier 42 ::
  14. # Dans bonjour.py
  15. a = 42
  16. On peut accéder à cette variable en important le module, par
  17. exemple depuis l'interpréteur, en utilisant le mot-clé `import`
  18. suivi du nom du module::
  19. $ python
  20. >>> import bonjour
  21. >>> bonjour.a
  22. 42
  23. Notez que pour que cela fonctionne:
  24. * Le nom du module est écrit directement, ce n'est *pas* une
  25. chaîne de caractères.
  26. * Il faut lancer la commande `python` sans argument
  27. * Il faut la lancer depuis le répertoire qui contient `bonjour.py`.
  28. On voit que l'assignation de la variable `a` dans `bonjour.py` est devenue
  29. un *attribut* du module `bonjour` lorsque `bonjour` a été importé
  30. Si maintenant on rajoute une fonction ``dire_bonjour`` dans ``bonjour.py``::
  31. # toujours dans bonjour.py
  32. a = 42
  33. def dire_bonjour():
  34. print("Bonjour!")
  35. On peut appeler la fonction ``dire_bonjour`` depuis l'interpréteur en accédant
  36. à l'attribut ``dire_bonjour`` du module ``bonjour``::
  37. >>> import bonjour
  38. >>> bonjour.dire_bonjour()
  39. Bonjour!
  40. Différence avec la commande python
  41. -----------------------------------
  42. Notez bien que lancer l'interpréteur et taper `import bonjour` dedans n'est pas
  43. la même chose que lancer `python bonjour.py`.
  44. Dans le deuxième cas, tout le code dans `bonjour.py` est exécuté, puis la commande python
  45. se termine.
  46. Dans le cas de l'interpréteur, on peut utiliser tous les attributs du module et appeler
  47. les fonctions autant de fois qu'on veut::
  48. >>> import bonjour
  49. >>> bonjour.dire_bonjour()
  50. Bonjour!
  51. >>> bonjour.dire_bonjour()
  52. Bonjour!
  53. On peut aussi modifier les valeurs des attributs::
  54. >>> import bonjour
  55. >>> bonjour.a
  56. 42
  57. >>> bonjour.a = 36
  58. >>> bonjour.a
  59. 36
  60. Les imports ne sont faits qu'une seule fois
  61. -------------------------------------------
  62. Il est important de noter que le code à l'intérieur d'un
  63. module n'est *pas* ré-éxécuté si le module a déjà été
  64. importé auparavant.
  65. On peut le voir en mettant du code dans `bonjour.py`,
  66. en plus des simples définitions de fonctions et assignations
  67. de variables::
  68. # Dans bonjour.py
  69. print("Je suis le module bonjour et tu viens de m’importer")
  70. >>> import bonjour
  71. Je suis le module foo et tu viens de m’importer
  72. >>> import bonjour
  73. <rien>
  74. Il faudra donc redémarrer l'interpréteur à chaque fois que le code dans `bonjour.py` change.
  75. a bibliothèque standard
  76. ------------------------
  77. La bibliothèque standard est une collection de modules directement utilisables fournis à l'installation de Python.
  78. Exemple: ``sys``, ``random``, ...
  79. Toute la bibliothèque standard est documentée - et la traduction en Français est en cours:
  80. https://docs.python.org/fr/3/library/index.html
  81. Mettez ce lien dans vos favoris - il vous sera très utile.
  82. Quelques exemples de modules de la bibliothèque standard
  83. ---------------------------------------------------------
  84. Easter eggs
  85. ++++++++++++
  86. (Ou fonctionnalités cachées)
  87. * ``import antigravity``
  88. * ``import this``
  89. Je vous laisse découvrir ce que fait le premier. Quant au deuxième, il contient
  90. une liste de préceptes que la plupart des développeurs Python s'efforcent de
  91. respecter. On en reparlera ...