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.8 KiB

% Programmation avec Python (chapitre 6) % Dimitri Merejkowsky

\center \huge Modules

Un fichier = un module

À un fichier mon_module.py correspond toujours un module mon_module. (La réciproque n’est pas vraie)

Code dans un module

# Dans bonjour.py
a = 42

Le module bonjour contient contient un attribut a dont la valeur est 42.

Importer un module

Avec le mot-clé import, suivi du nom du module, sans guillemets.

$ python
>>> import bonjour
>>> bonjour.a
42

Une fonction dans un module

# toujours dans bonjour.py
a = 42
def dire_bonjour():
    print("Bonjour!")

Appeler une fonction depuis un module

>>> import bonjour
>>> bonjour.dire_bonjour()
Bonjour!

note: différent de python3 bonjour.py.

Interaction - 1

>>> import bonjour
>>> bonjour.dire_bonjour()
Bonjour!
>>> bonjour.dire_bonjour()
Bonjour!

Interaction - 2

>>> import bonjour
>>> bonjour.a
42
>>> bonjour.a = 36
>>> bonjour.a
36

Les imports ne sont faits qu’une seule fois

# Dans bonjour.py
print("Je suis le module bonjour!")
>>> import bonjour
Je suis le module bonjour!
>>> import bonjour
<rien>

La bibliothèque standard

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.

sys

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"]

sys.argv avec un fichier

# 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"]

sys.argv avec un fichier - 2

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"]

Les scripts Python

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)
  1. Erreur
  2. Affiche “Bonjour”

\pause

Réponse: 2

def dire_bonjour():
    print("Bonjour")

x = dire_bonjour()
print(x)
  1. Erreur
  2. Affiche “Bonjour”
  3. Affiche ‘None”

\pause

Réponse: 3 - pas de return, la fonction renvoie None

def dire_bonjour():
    return "Bonjour"

dire_bonjour()
  1. N’affiche rien
  2. Affiche “Bonjour”
  3. Affiche ‘None”

\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)
  1. Erreur
  2. Affiche ‘42’

\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)
  1. Erreur
  2. Affiche ‘42’

\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
  1. Erreur
  2. Affiche ‘43’

\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
  1. Erreur
  2. Affiche ‘mon_script’

\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
  1. Erreur
  2. Affiche ‘mon_script’

\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
  1. Erreur
  2. Affiche ‘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
  1. Erreur
  2. Affiche ‘mon_argument’

\pause

Réponse 2 :)

# Dans mon_script.py
import sys
print(sys.argv[1])
$ python mon_script.py
  1. Erreur
  2. Affiche ‘mon_script.py’

\pause

Réponse 1. argv a une taille 1, et on accède à l’index 1.

\center \huge Atelier