Python : premiers pas
Exécuter du Python
Section intitulée « Exécuter du Python »python3 -c 'print("Bonjour")' # une lignepython3 bonjour.py # un fichierpython3 # console interactive (quitter : Ctrl+D)python3 -m http.server 8000 --bind 127.0.0.1 # serveur de fichiers de testFichier bonjour.py :
import sys
nom = sys.argv[1] if len(sys.argv) > 1 else "monde"print(f"Bonjour, {nom} !")python3 bonjour.py AlicePour rendre le script exécutable :
chmod +x bonjour.py # avec « #!/usr/bin/env python3 » en première ligne./bonjour.py AliceVariables et types
Section intitulée « Variables et types »entier = 42decimal = 3.14texte = "chaîne"actif = Truerien = None
print(type(entier)) # <class 'int'>print(f"Valeur : {entier}, texte : {texte!r}")L’indentation (4 espaces) délimite les blocs : c’est la syntaxe du langage, pas une option.
Listes, tuples, ensembles, dictionnaires
Section intitulée « Listes, tuples, ensembles, dictionnaires »liste = ["a", "b", "c"]liste.append("d")print(liste[0], liste[-1], len(liste), liste[1:3])
point = (3, 4) # tuple : non modifiableuniques = {1, 2, 2, 3} # ensemble : éléments uniques
personne = {"nom": "Alice", "age": 30}personne["email"] = "alice@exemple.com"print(personne.get("telephone", "inconnu"))
for i, valeur in enumerate(liste): print(i, valeur)for cle, valeur in personne.items(): print(cle, valeur)Compréhensions
Section intitulée « Compréhensions »carres = [n * n for n in range(5)] # [0, 1, 4, 9, 16]pairs = [n for n in range(10) if n % 2 == 0]longueurs = {mot: len(mot) for mot in ["a", "bb", "ccc"]}Conditions et boucles
Section intitulée « Conditions et boucles »age = 20if age >= 18: print("majeur")elif age >= 16: print("presque")else: print("mineur")
for i in range(1, 4): print(i)
n = 3while n > 0: n -= 1Fonctions
Section intitulée « Fonctions »def additionner(a: int, b: int = 0) -> int: # Additionne deux entiers. return a + b
print(additionner(2, 3))print(additionner(b=5, a=1))Les annotations de type (int, -> int) ne sont pas vérifiées à l’exécution : un outil comme mypy ou pyright les contrôle.
from dataclasses import dataclass
@dataclassclass Client: nom: str email: str
def domaine(self) -> str: return self.email.split("@")[1]
c = Client("Alice", "alice@exemple.com")print(c, c.domaine())Fichiers et JSON
Section intitulée « Fichiers et JSON »from pathlib import Pathimport json
chemin = Path("donnees.json")donnees = json.loads(chemin.read_text(encoding="utf-8"))Path("sortie.json").write_text( json.dumps(donnees, indent=2, ensure_ascii=False), encoding="utf-8")
with open("journal.txt", "a", encoding="utf-8") as f: f.write("ligne\n")with ferme le fichier automatiquement. Toujours préciser encoding="utf-8".
Exceptions
Section intitulée « Exceptions »import sys
try: resultat = 1 / 0except ZeroDivisionError as e: print(f"Erreur : {e}", file=sys.stderr) sys.exit(1)finally: print("terminé")Arguments en ligne de commande
Section intitulée « Arguments en ligne de commande »import argparse
parser = argparse.ArgumentParser(description="Salue quelqu'un")parser.add_argument("nom", help="nom à saluer")parser.add_argument("-n", "--nombre", type=int, default=1)parser.add_argument("-v", "--verbeux", action="store_true")args = parser.parse_args()
for _ in range(args.nombre): print(f"Bonjour, {args.nom} !")python3 salue.py Alice -n 2python3 salue.py --helpStructure d’un script
Section intitulée « Structure d’un script »def main() -> int: print("démarrage") return 0
if __name__ == "__main__": raise SystemExit(main())Le bloc if __name__ == "__main__": permet d’importer le fichier sans exécuter le programme.
Dépannage
Section intitulée « Dépannage »| Symptôme | Piste |
|---|---|
IndentationError |
Mélange de tabulations et d’espaces : utiliser 4 espaces |
ModuleNotFoundError |
Paquet non installé dans l’environnement actif : Environnements virtuels |
SyntaxError |
Lire la ligne et le caret ^ du message |
UnicodeDecodeError |
Préciser encoding="utf-8" |
NameError |
Variable non définie ou faute de frappe |
Ubuntu 24.04 et 26.04 : différences à connaître
Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »Le code de cette page fonctionne en Python 3.12 et 3.14.