Python : Opérateurs
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>