# 📘 Techniques pour rendre son code esthétique
Ce cours propose une synthèse de techniques concrètes pour améliorer l’élégance, la lisibilité et la concision de votre code Python. Écrire du « beau code » ne relève pas uniquement du goût personnel, mais d’une culture partagée autour de la **lisibilité, simplicité et expressivité**
## ✅ 1. Soigner la présentation (PEP8)
- Utiliser **4 espaces** pour l’indentation
- Limiter les lignes à **79 caractères**
- Nommer les variables en `snake_case`
- Nommer les classes en `CamelCase`
- Laisser une ligne vide entre deux fonctions
- Éviter les importations inutiles
- Espaces autour des opérateurs `a + b`, pas `a+b`
- Saut de ligne entre les blocs logiques
- Commentaires utiles et brefs
## 🧠 2. Nommer clairement
Des noms explicites rendent les commentaires souvent superflus :
```python
# Mauvais
x = 7
# Meilleur
nombre_utilisateurs_actifs = 7
```
## 🧩 3. Réduire la complexité
- Découper les fonctions longues ou imbriquées
- Éviter les `if`/`else` emboîtés en préférant des retours directs :
```python
# Moins lisible
def est_pair(n):
if n % 2 == 0:
return True
else:
return False
# Plus lisible
def est_pair(n):
return n % 2 == 0
```
## 🧼 4. Utiliser les idiomes Python
### ✅ Affectation multiple
```python
x, y = 3, 4
```
### 🔄 Inversion de variables
```python
a, b = b, a
```
### 📇 enumerate et zip
```python
for i, val in enumerate(liste):
print(i, val)
for a, b in zip(liste1, liste2):
print(a, b)
```
## 🔁 5. Utiliser les compréhensions
Les compréhensions rendent le code plus compact :
```python
# Carrés des nombres pairs
[x**2 for x in range(10) if x % 2 == 0]
```
```python
# Remplacer les négatifs par 0
[x if x >= 0 else 0 for x in valeurs]
```
```python
# Produit cartésien
[(x, y) for x in [1, 2] for y in ['a', 'b']]
```
## 🔎 6. Éviter les répétitions (DRY - Don't Repeat Yourself)
Si un bloc est copié/collé plus de deux fois, il mérite probablement une fonction :
```python
def afficher_statut(utilisateur):
if utilisateur.est_admin:
print("Admin")
else:
print("Standard")
```
## 🧰 7. Utiliser des fonctions anonymes avec `lambda`
```python
eleves = [("Alice", 14), ("Bob", 12)]
tri = sorted(eleves, key=lambda x: x[1])
```
## 🧪 8. Utiliser `all()`, `any()`, `map()`
```python
# Vérifie si tous les éléments sont valides
notes = [12, 15, 18]
if all(note >= 10 for note in notes):
print("Tous les étudiants ont validé")
# Vérifier si au moins un élément est valide
if any(x > 15 for x in notes):
notes
# Applique une fonction à chaque élément
nombres = ['1', '8', '27']
entiers = list(map(int, nombres))
```
## 🗺️ 9. Prendre soin de la présentation
- Espaces autour des opérateurs `a + b`, pas `a+b`
- Saut de ligne entre les blocs logiques
- Commentaires utiles et brefs
# 🗓️ Historique
> **Dernière mise à jour :** `21 juillet 2025`
> **Rédigé par :** [[Julien DUQUENNOY]]