Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.
Repozitorijs ir arhivēts. Tam var aplūkot failus un to var klonēt, bet nevar iesūtīt jaunas izmaiņas, kā arī atvērt jaunas problēmas/izmaiņu pieprasījumus.

01-modules.md 3.5 KiB

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