Les Principes Fondamentaux de l'Itérabilité
Objectifs
Les objectifs de cette vidéo incluent :
- Comprendre la notion d'itérabilité en Python.
- Apprendre à utiliser la fonction ITER
pour vérifier si un objet est itérable.
- Découvrir le fonctionnement des itérators et des boucles FOR.
- Explorer l'unpacking et ses applications dans les scripts Python.
Résumé
Cette leçon explore l'itérabilité en Python, montrant comment les structures de données comme les listes, les tuples et les sets peuvent être parcourues à l'aide de boucles FOR.
Description
Dans cette leçon, nous plongeons dans le concept d'itérabilité en Python, une caractéristique commune à de nombreuses structures de données. En apprenant à utiliser la fonction ITER
, vous découvrirez comment vérifier si un objet est itérable. Nous examinerons également le rôle crucial des objets itérators et comment ils interagissent avec les boucles FOR. En plus des collections classiques comme les listes et les dictionnaires, vous apprendrez que même des chaînes de caractères et des fichiers peuvent être itérables, offrant une grande flexibilité dans le traitement des données. Enfin, nous mettrons en lumière le processus d'unpacking et démontrerons comment il peut être utilisé pour décomposer des itérables en variables distinctes. Cette leçon fournit une approche compréhensive en utilisant des exemples concrets pour illustrer chaque concept.
Questions fréquentes
ITER
sur cet objet. Si aucun itérateur n'est retourné, cela signifie que l'objet n'est pas itérable.
a, b, c = 'ABC'
, les variables a
, b
, et c
contiendront respectivement 'A', 'B', et 'C'.
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. 🙏
Je suis vraiment tres satisfait par cette première formation suivie sur Python.
#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")