Python : Opérateurs

De Justine's wiki
Aller à la navigation Aller à la recherche

Cette page liste quelques opérateurs peu courants. Sûrement pas exhaustif ! Ne rêvez pas.

|, le "bitwise OR"

Dictionnaires

Il s'agit d'une nouveauté apparue dans la 3.9.

On peut merger des dictionnaires avec l'opérateur |. Il existe aussi l'opérateur |= qui permet de faire la même chose (de la même façon que += permet de faire la même chose que a = a+1).

Cet opérateur effectue une "merge-right", un exemple sera plus parlant :

<source lang="python"> d1 = {"a": 0, "b": 1, "c": 2} d2 = {"c": 20, "d": 30}

>>> d1 | d2 {"a": 0, "b": 1, "c": 20, "d": 30} >>> d1 {"a": 0, "b": 1, "c": 2}

>>> # Update, |= >>> d1 |= d2 >>> d1 {"a": 0, "b": 1, "c": 20, "d": 30} </source>

Ensembles

Dans les ensembles, cet opérateur a une fonction d'union. Voir la page sur les ensembles

Nombres

Avec des nombres, il s'agit d'un OR binaire. <source lang="python"> >>> 0 | 1 1 >>> 0 | 0 0 >>> 6 | 7 7 </source>

Je ne comprend pas trop ce que ça fait au delà de 1, mais ça sort le plus grand chiffre.

:=, dit "walrus operator"

Cet opérateur tout mignon est surnommé "walrus" à cause de sa ressemblance avec une tête de morse.

La doc Python le décrit comme : "[...]a new syntax := that assigns values to variables as part of a larger expression". En gros, il permet d'assigner une valeur au sein d'un test, ce qui permet de gagner du temps :

<source lang="python"> >>> a = 50 >>> if (b := a) < 75: ... print("smol") smol </source>

Il permet aussi de tester si l'assignation est possible. Attention, si on essaie d'assigner une variable indéfinie, Python plante quand même : <source lang="python"> >>> a = "oui" >>> if b := a: ... print("oui") oui >>> if b := c: ... print("oui") ... else: ... print("non") Traceback (most recent call last):

 File "<stdin>", line 1, in <module>

NameError: name 'c' is not defined

name 'c' is not defined </source>