Command Palette

Search for a command to run...

Python

Référence Python avec syntaxe de base et bibliothèques courantes

Variables et Types

Assignation de variables

nom = 'Alice'
age = 30
pi = 3.14
actif = True

Vérifier le type

type('hello')  # <class 'str'>
type(42)       # <class 'int'>
type(3.14)     # <class 'float'>
type(True)     # <class 'bool'>
type([1,2])    # <class 'list'>
type({'a':1})  # <class 'dict'>

Conversion de types

int('42')      # 42
str(42)        # '42'
float('3.14')  # 3.14
bool(0)        # False
list('abc')    # ['a', 'b', 'c']

f-strings (formatage)

nom = 'Alice'
print(f'Bonjour {nom}, vous avez {age} ans')
print(f'{pi:.2f}')  # '3.14'

Listes

Créer une liste

fruits = ['pomme', 'banane', 'cerise']
nums = list(range(10))  # [0, 1, ..., 9]

Ajouter des éléments

fruits.append('mangue')         # ajoute à la fin
fruits.insert(1, 'orange')      # insère à l'index 1
fruits.extend(['kiwi', 'poire']) # ajoute plusieurs

Supprimer des éléments

fruits.remove('banane')  # supprime par valeur
fruits.pop()             # supprime le dernier
fruits.pop(0)            # supprime à l'index 0
del fruits[1]            # supprime à l'index 1
fruits.clear()           # vide la liste

Slicing

nums = [0, 1, 2, 3, 4, 5]
nums[1:4]    # [1, 2, 3]
nums[:3]     # [0, 1, 2]
nums[3:]     # [3, 4, 5]
nums[-2:]    # [4, 5]
nums[::2]    # [0, 2, 4] (pas de 2)
nums[::-1]   # [5, 4, 3, 2, 1, 0] (inversé)

Trier

nums.sort()                 # tri croissant en place
nums.sort(reverse=True)     # tri décroissant
sorted(nums)                # retourne une nouvelle liste triée
sorted(users, key=lambda u: u['age'])

Méthodes utiles

len(fruits)            # longueur
'pomme' in fruits      # True si présent
fruits.index('pomme')  # index de l'élément
fruits.count('pomme')  # nombre d'occurrences

Dictionnaires

Créer un dictionnaire

user = {'nom': 'Alice', 'age': 30}
user = dict(nom='Alice', age=30)

Accès aux valeurs

user['nom']           # 'Alice' (KeyError si absent)
user.get('nom')       # 'Alice' (None si absent)
user.get('role', 'user')  # 'user' (valeur par défaut)

Modifier et ajouter

user['email'] = 'a@b.com'  # ajoute ou modifie
user.update({'age': 31, 'role': 'admin'})

Supprimer

del user['age']
user.pop('age', None)  # supprime, retourne None si absent

Parcourir un dictionnaire

user.keys()    # dict_keys(['nom', 'age'])
user.values()  # dict_values(['Alice', 30])
user.items()   # dict_items([('nom', 'Alice'), ('age', 30)])

for key, value in user.items():
    print(f'{key}: {value}')

Dictionnaire en compréhension

carres = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

Fonctions

Définir une fonction

def saluer(nom):
    return f'Bonjour {nom}'

Paramètres par défaut

def creer(nom, role='user'):
    return {'nom': nom, 'role': role}

Args et kwargs

def func(*args, **kwargs):
    print(args)    # tuple des arguments positionnels
    print(kwargs)  # dict des arguments nommés

Lambda

double = lambda x: x * 2
sorted(users, key=lambda u: u['age'])

Retourner plusieurs valeurs

def divmod_custom(a, b):
    return a // b, a % b

quotient, reste = divmod_custom(10, 3)

Boucles et Itération

Boucle for avec range

for i in range(5):       # 0, 1, 2, 3, 4
    print(i)
for i in range(2, 10, 2):  # 2, 4, 6, 8
    print(i)

Boucle for sur une liste

for fruit in fruits:
    print(fruit)

enumerate - index + valeur

for i, fruit in enumerate(fruits):
    print(f'{i}: {fruit}')

zip - parcourir en parallèle

noms = ['Alice', 'Bob']
ages = [30, 25]
for nom, age in zip(noms, ages):
    print(f'{nom} a {age} ans')

while

i = 0
while i < 5:
    print(i)
    i += 1

break et continue

for n in range(10):
    if n == 3: continue  # saute 3
    if n == 7: break     # arrête à 7
    print(n)

Compréhensions

List comprehension

carres = [x**2 for x in range(10)]

Avec condition

pairs = [x for x in range(10) if x % 2 == 0]

Dict comprehension

mapping = {k: v for k, v in zip(cles, valeurs)}

Set comprehension

uniques = {x % 3 for x in range(10)}

Compréhension imbriquée

flat = [x for row in matrix for x in row]

Fichiers

Lire un fichier

with open('fichier.txt', 'r') as f:
    contenu = f.read()

Lire ligne par ligne

with open('fichier.txt', 'r') as f:
    for ligne in f:
        print(ligne.strip())

Écrire dans un fichier

with open('fichier.txt', 'w') as f:
    f.write('Bonjour\n')

'w' écrase le fichier, 'a' ajoute à la fin

Lire/écrire du JSON

import json

with open('data.json', 'r') as f:
    data = json.load(f)

with open('data.json', 'w') as f:
    json.dump(data, f, indent=2)

Gestion d'erreurs

try / except

try:
    result = 10 / 0
except ZeroDivisionError:
    print('Division par zéro !')

Capturer l'exception

try:
    data = json.loads(texte)
except json.JSONDecodeError as e:
    print(f'Erreur: {e}')

else et finally

try:
    f = open('fichier.txt')
except FileNotFoundError:
    print('Fichier introuvable')
else:
    contenu = f.read()  # exécuté si pas d'erreur
finally:
    print('Terminé')    # toujours exécuté

Lever une exception

raise ValueError('Valeur invalide')

Modules utiles

os - système de fichiers

import os
os.listdir('.')                # liste les fichiers
os.path.exists('fichier.txt')  # vérifie l'existence
os.path.join('dossier', 'fichier.txt')
os.makedirs('a/b/c', exist_ok=True)
os.remove('fichier.txt')

pathlib - chemins modernes

from pathlib import Path
p = Path('dossier') / 'fichier.txt'
p.exists()
p.read_text()
p.write_text('contenu')
list(Path('.').glob('*.py'))

datetime

from datetime import datetime
now = datetime.now()
now.strftime('%Y-%m-%d %H:%M:%S')

random

import random
random.choice(['a', 'b', 'c'])
random.randint(1, 10)
random.shuffle(liste)
random.sample(liste, 3)