Xavier Lamorlette

Python : éléments de syntaxe

Sommaire :

Compréhension de liste

[expression for item in list if predicate]

Enum

from enum import Enum, unique
@unique
class MyEnumeration(Enum):
    A = 0
    B = 1

enumerate

enumerate permet de récupérer en même temps l'élément et son indice depuis une liste :

toto: List[]
for index, item in enumerate(toto):
   …

enumerate renvoie des tuples :

toto: List[]
for index_item in enumerate(toto):
   print("toto[%d] = %r" % index_item)

for … else

Le bloc else est exécuté à la fin de la boucle, sauf en cas de break, de return ou d'exception.

for item in collection:
   if condition:
      break
else:
   # condition was not met
   …

Le bloc else permet d'éviter de mettre un drapeau dans la boucle conditionnelle :

condition_met = False
for item in collection:
   if condition:
      condition_met = True
      break
if not condition_met:
   …

Dans un cas simple comme ci-dessus, en fait, il vaut mieux utiliser any :

if any(condition(item) for item in collection):
    …
else:
    …

f-string

Raccourci pour afficher le contenu d'une variable :

print(f"{foo=}")

iter()

for x in iter(a_function, stop_value):
   …

est équivalent à :

x = a_function()
while x != stop_value:
    …
    x = a_function()

Main

if __name__ == "__main__":
    …

match … case

match variable:
    case value_1:
        …
    case _other:  # all other values
        …

Slicing

a_list[start:stop:step]

try … except … else … finally

Le bloc optionnel else est exécuté si aucune exception n'a été levée.

Le bloc optionnel finally est exécuté dans tous les cas.

try:
    …
except Exception:
    # execption handling
    …
else:
    # no exception was raised
    …
finally:
    # clean-up
    …

vars()

vars(…) donne le contenu d'un espace de nommage (variable, classe, module…) (sous la forme d'un dictionnaire).
Exemple : vars(Class) est équivalent à Class.__dict__.

Walrus operator

def foo() -> Optional:
    …

if bar := foo():
    return bar

if (n := len(a)) > 10:
    print(f"List is too long ({n} elements, expected <= 10)")

[clean_name.title() for name in names if (clean_name := normalize(name)) in allowed_names]

with

with permet de créer un objet dans un contexte qui est automatiquement détruit, même en cas d'exception.

with open(file_path, 'w') as file:
    file.write("toto)

Une clause with peut contenir la construction de plusieurs objets, séparés par des virgules: with … as …, … as …:.

La dernière mise à jour de cette page date de mai 2024.

Le contenu de ce site est, en tant qu'œuvre originale de l'esprit, protégé par le droit d'auteur.
Pour tout commentaire, vous pouvez m'écrire à xavier.lamorlette@gmail.com.