Maîtriser Python - Techniques avancées
- Accès illimité à 1700 formations
Ce que vous allez apprendre
- Manipuler les fonctions comme des objets (références, paramètres, comportements).
- Exploiter lambdas, closures et décorateurs pour structurer un code réutilisable.
- Mettre en œuvre des structures de données avancées et gérer le temps avec
datetime. - Optimiser certains traitements avec
heapqet des approches adaptées aux volumes de données. - Maîtriser itérateurs, générateurs et le mot-clé
yielden situation réelle. - Utiliser
itertoolset rendre une classe itérable selon le protocole Python. - Choisir une approche de concurrence pertinente : threads, multiprocessing ou asyncio (et comprendre le GIL).
- Mettre en place la persistance : JSON/XML, fichiers de configuration et bases relationnelles via SQL/ORM.
Les fonctions, des objets comme les autres
Structures de données avancées
L'itération en pratique
Partager le travail
Persistence
Description
Cette formation s’adresse aux personnes ayant déjà de bonnes bases en Python et souhaitant adopter des pratiques plus avancées pour écrire un code plus expressif, plus modulaire et mieux adapté à des usages concrets. Le parcours commence par un approfondissement des fonctions en tant qu’objets : manipulation, lambdas, closures et décorateurs, afin de structurer proprement des comportements réutilisables.
La formation explore ensuite des structures de données et modules essentiels pour aller plus loin dans la pratique : gestion du temps avec datetime, exploration approfondie des collections, et utilisation de heapq pour traiter efficacement de grandes quantités de données. Une part importante est consacrée à l’itération : protocoles d’itérabilité, générateurs, mot-clé yield, création de classes itérables et découverte d’itertools au travers d’exemples progressifs.
Le programme aborde également le partage du travail et l’exécution concurrente : compréhension du GIL, choix entre threading, multiprocessing et programmation asynchrone avec asyncio. Enfin, la formation traite la persistance : formats d’échange (JSON, XML), fichiers de configuration (INI, TOML, YAML) et interaction avec des bases de données relationnelles, jusqu’aux principes des ORM. À l’issue du parcours, les concepts avancés sont mobilisables pour concevoir des scripts et modules Python robustes et maintenables.
Pré-requis
Connaître les bases du langage Python (types, conditions, boucles, fonctions simples, notions de classes). Disposer d’un environnement Python installé pour reproduire les démonstrations.
Public Cible
Cette formation s’adresse aux développeurs ayant déjà une pratique régulière de Python et souhaitant approfondir des mécanismes avancés (fonctions, itération, concurrence, persistance). Elle convient également aux profils data ou web qui veulent mieux structurer leurs scripts et comprendre les bons choix techniques selon le contexte.
Questions fréquentes
-
Cette formation Python avancée est-elle adaptée après un niveau débutant ?
Oui, à condition de maîtriser les bases (types, boucles, fonctions, notions de classes). Le contenu vise ensuite des mécanismes avancés et des cas d’usage plus techniques. -
Quels sujets avancés de Python sont abordés dans la formation ?
La formation couvre notamment lambdas, closures et décorateurs, structures de données avancées, datetime, heapq, itérateurs et générateurs, itertools, ainsi que threading, multiprocessing et asyncio. -
Comment choisir entre threading, multiprocessing et asyncio en Python ?
Le programme explique le rôle du GIL et les cas d’usage typiques : threads pour l’I/O, multiprocessing pour exploiter plusieurs cœurs sur des tâches CPU, asyncio pour des flux asynchrones structurés. -
La persistance des données est-elle traitée (JSON, XML, YAML, bases SQL) ?
Oui. La formation aborde la persistance via JSON et XML, les fichiers de configuration (INI, TOML, YAML) et les bases relationnelles, avec une ouverture sur les ORM. -
Faut-il connaître Django, Flask ou un framework web ?
Non. La formation se concentre sur Python et ses concepts avancés, réutilisables ensuite dans des projets web, data ou d’automatisation.
Avis des apprenants
- Accès illimité à la formation
- Accès illimité à 1700 formations
#CODE en python 3.10.0 64 bits (VScode 1.62.3)
import datetime
import asyncio
import aiohttp
import requests
# ----------------------------------------------------------------------------------------------------------------------------
def req_bloquante(num):
print(f"Get {num}")
uid = requests.get("https://httpbin.org/uuid").json()["uuid"]
print(f"Res {num}: {uid}")
def faire_toutes_les_requetes():
for x in range(51):
req_bloquante(x)
print("=====> ### Bloquant : ")
start = datetime.datetime.now()
faire_toutes_les_requetes()
exec_time = (datetime.datetime.now() - start).seconds
print(f"Downloading all take {exec_time} seconds\n")
# ----------------------------------------------------------------------------------------------------------------------------
async def requeteSansBloquer(semaphore, num, session):
print(f"Get {num}")
# await semaphore.acquire() # putting this await semaphore commande the Res is ordering but process very slow ~60 sec
async with session.get("https://httpbin.org/uuid") as response:
uid = (await response.json())["uuid"]
# await asyncio.sleep(delay=3) #delay = number of seconds
# semaphore.release()
print(f"Res {num}: {uid}")
# return uid # ?
async def main():
semaphore = asyncio.Semaphore(value=1)
tasks = []
async with aiohttp.ClientSession(
loop=loop, connector=aiohttp.TCPConnector(ssl=False)
) as session:
for x in range(51):
tasks.append(requeteSansBloquer(semaphore, x, session))
await asyncio.gather(*tasks)
print("This is after the loop...")
if __name__ == "__main__":
print("=====> ### Non Bloquant : ")
start = datetime.datetime.now()
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
exec_time = (datetime.datetime.now() - start).microseconds
print(f"Downloading all take {exec_time} micro seconds\n")
Je suis vraiment tres satisfait par cette première formation suivie sur Python.
Les thèmes variés agrémentés d'exemples simples et clairs enrichissent toutes les notions exposées de façon particulièrement pédagogique. 👍
L'approche didactique m'a permis de beaucoup mieux comprendre tout un tas de concepts plus ou moins bien assimilés auparavant avec une vue d'ensemble nettement plus limpide aujourd'hui. 🤓
Merci pour cette belle prestation. 🙏