% Programmation avec Python (chapitre 6) % Dimitri Merejkowsky
\center \huge Modules
À un fichier mon_module.py
correspond toujours un module mon_module
.
(La réciproque n’est pas vraie)
# Dans bonjour.py
a = 42
Le module bonjour
contient contient un attribut a
dont la valeur est 42.
Avec le mot-clé import
, suivi du nom du module,
sans guillemets.
$ python
>>> import bonjour
>>> bonjour.a
42
# toujours dans bonjour.py
a = 42
def dire_bonjour():
print("Bonjour!")
>>> import bonjour
>>> bonjour.dire_bonjour()
Bonjour!
note: différent de python3 bonjour.py
.
>>> import bonjour
>>> bonjour.dire_bonjour()
Bonjour!
>>> bonjour.dire_bonjour()
Bonjour!
>>> import bonjour
>>> bonjour.a
42
>>> bonjour.a = 36
>>> bonjour.a
36
# Dans bonjour.py
print("Je suis le module bonjour!")
>>> import bonjour
Je suis le module bonjour!
>>> import bonjour
<rien>
La bibliothèque standard est une collection de modules directement utilisables fournis à l’installation de Python.
Exemple: sys
, random
, ...
Toute la bibliothèque standard est documentée - et la traduction en Français est en cours:
https://docs.python.org/fr/3/library/index.html
Mettez ce lien dans vos favoris - il vous sera très utile.
Contient notamment sys.argv
, une liste de chaînes de caractères, qui
n’est jamais vide.
Dans l’interpréteur intéractif, le premier élément est le chemin du binaire python:
$ python3
>>> import sys
>>> sys.argv
["/usr/bin/python3"]
# Dans lancez_moi.py
import sys
def main():
print(sys.argv)
\vfill
Le premier élément est alors le nom du fichier:
$ python3 lancez_moi.py
["lancez_moi.py"]
Si on rajoute des mots après le nom du fichier, ils apparaissent dans sys.argv
:
# dans lancez_moi.py
import sys
def main():
print(sys.argv)
\vfill
$ python3 lancez_moi.py un deux trois
["lancez_moi.py", "un", "deux", "trois"]
Pour interagir avec l’utilisateur, on a souvent utilisé input()
, passer par
sys.argv
est plus commun.
Exemple:
$ python3 faire_le_café
$ python3 faire_le_café --sans-sucre
\center \huge QCM
def dire_bonjour():
return "Bonjour"
x = dire_bonjour()
print(x)
\pause
Réponse: 2
def dire_bonjour():
print("Bonjour")
x = dire_bonjour()
print(x)
\pause
Réponse: 3 - pas de return, la fonction renvoie None
def dire_bonjour():
return "Bonjour"
dire_bonjour()
\pause
Réponse 1 - la fonction renvoie une valeur, mais on n’en fait rien.
# Dans mon_module.py
ma_variable = 42
>>> import "mon_module"
>>> print(ma_variable)
\pause
Réponse 1: les noms de modules ne sont pas des strings!
# Dans mon_module.py
ma_variable = 42
>>> import mon_module
>>> print(ma_variable)
\pause
Réponse 1: ma_variable
est un attribut de mon_module
.
# Dans mon_module.py
ma_variable = 42
>>> import mon_module
>>> mon_module.ma_variable = 43
>>> mon_module.ma_variable
\pause
Réponse 2: on peut lire et écrire les attributs des modules importés!
# Dans mon_script.py
print(sys.argv[0])
$ python mon_script mon_argument
\pause
Réponse 1: il faut donner le vrai nom du fichier!
# Dans mon_script.py
print(sys.argv[0])
$ python mon_script.py mon_argument
\pause
Réponse 1: il faut importer sys
avant de pouvoir l’utiliser
# Dans mon_script.py
import sys
print(sys.argv[0])
$ python mon_script.py mon_argument
\pause
C’est un piège! argv[0]
est le chemin du script!
# Dans mon_script.py
import sys
print(sys.argv[1])
$ python mon_script.py mon_argument
\pause
Réponse 2 :)
# Dans mon_script.py
import sys
print(sys.argv[1])
$ python mon_script.py
\pause
Réponse 1. argv
a une taille 1, et on accède à l’index 1.
\center \huge Atelier