Aller au contenu

Python : premiers pas

Fenêtre de terminal
python3 -c 'print("Bonjour")' # une ligne
python3 bonjour.py # un fichier
python3 # console interactive (quitter : Ctrl+D)
python3 -m http.server 8000 --bind 127.0.0.1 # serveur de fichiers de test

Fichier bonjour.py :

import sys
nom = sys.argv[1] if len(sys.argv) > 1 else "monde"
print(f"Bonjour, {nom} !")
Fenêtre de terminal
python3 bonjour.py Alice

Pour rendre le script exécutable :

Fenêtre de terminal
chmod +x bonjour.py # avec « #!/usr/bin/env python3 » en première ligne
./bonjour.py Alice
entier = 42
decimal = 3.14
texte = "chaîne"
actif = True
rien = 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.

liste = ["a", "b", "c"]
liste.append("d")
print(liste[0], liste[-1], len(liste), liste[1:3])
point = (3, 4) # tuple : non modifiable
uniques = {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)
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"]}
age = 20
if age >= 18:
print("majeur")
elif age >= 16:
print("presque")
else:
print("mineur")
for i in range(1, 4):
print(i)
n = 3
while n > 0:
n -= 1
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
@dataclass
class Client:
nom: str
email: str
def domaine(self) -> str:
return self.email.split("@")[1]
c = Client("Alice", "alice@exemple.com")
print(c, c.domaine())
from pathlib import Path
import 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".

import sys
try:
resultat = 1 / 0
except ZeroDivisionError as e:
print(f"Erreur : {e}", file=sys.stderr)
sys.exit(1)
finally:
print("terminé")
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} !")
Fenêtre de terminal
python3 salue.py Alice -n 2
python3 salue.py --help
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.

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.