3.8 operator --- Les opérateurs standard considérés comme des fonctions.

Le module operator exporte un ensemble de fonctions implémentées en C correspondant aux opérateurs intrinsèques de Python. Par exemple, operator.add(x, y) équivaut à l'expression x+y. Les noms de fonctions sont ceux qui servent pour les méthodes spéciales de classes; des variantes sans les "__" de début et de fin sont aussi fournis par commodité.

Le module operator définit les fonctions suivantes:

add(a, b)
__add__(a, b)
Retourne a + b, où a et b sont des nombres.

sub(a, b)
__sub__(a, b)
Retourne a - b.

mul(a, b)
__mul__(a, b)
Retourne a * b, où a et b sont des nombres.

div(a, b)
__div__(a, b)
Retourne a / b.

mod(a, b)
__mod__(a, b)
Retourne a % b.

neg(o)
__neg__(o)
Retourne l'opposé de o (-o).

pos(o)
__pos__(o)
Retourne o avec le signe + (+o).

abs(o)
__abs__(o)
Retourne la valeur absolue de o.

inv(o)
__inv__(o)
__invert__(o)
Retourne l'inverse de o. Les noms invert() et __invert__() ont été ajoutés en Python 2.0.

lshift(a, b)
__lshift__(a, b)
Retourne a décalé vers la gauche de b.

rshift(a, b)
__rshift__(a, b)
Retourne a décalé vers la droite de b.

and_(a, b)
__and__(a, b)
Retourne le et binaire de a et b.

or_(a, b)
__or__(a, b)
Retourne le ou binaire de a et b.

xor(a, b)
__xor__(a, b)
Retourne le ou exclusif binaire de a et b.

not_(o)
__not__(o)
Retourne le résultat de not o. (Notez qu'il n'y a pas de méthode __not__() pour les instances d'objets ; seul le coeur de l'interpréteur définit cette opération.)

truth(o)
Retourne 1 si o est vrai, et 0 sinon.

concat(a, b)
__concat__(a, b)
Retourne a + ba et b sont des séquences.

repeat(a, b)
__repeat__(a, b)
Retourne a * ba est une séquence et b est un entier.

contains(a, b)
__contains__(a, b)
Retourne le résultat du test b in a. Notez l'inversion de l'ordre des opérandes. Le nom __contains__() a été ajouté dans Python 2.0.

sequenceIncludes(...)

Déconseillé depuis la version 2.0 Utilisez contains() à la place.Alias pour contains().

countOf(a, b)
Retourne le nombre d'occurrences de b dans a.

indexOf(a, b)
Retourne l'index de la première occurrence de b dans a.

getitem(a, b)
__getitem__(a, b)
Retourne la valeur de a à l'index b.

setitem(a, b, c)
__setitem__(a, b, c)
Donne à l'élément de a à l'index b la valeur c.

delitem(a, b)
__delitem__(a, b)
Enlève la valeur de a à l'index b.

getslice(a, b, c)
__getslice__(a, b, c)
Retourne la tranche de a de l'index b à l'index c-1.

setslice(a, b, c, v)
__setslice__(a, b, c, v)
Donne à la tranche de a de l'index b à l'index c-1 la valeur de la séquence v.

delslice(a, b, c)
__delslice__(a, b, c)
Enlève la tranche de a de l'index b à l'index c-1.

Le module operator définit aussi quelques prédicats pour tester le type des objets. Note: Faites attention dans l'interprétation des résultats de ces fonctions; seul isCallable() présente une certaine fiabilité avec les instances d'objets. Par exemple:

>>> class C:
...     pass
... 
>>> import operator
>>> o = C()
>>> operator.isMappingType(o)
1

isCallable(o)

Déconseillé depuis la version 2.0 Utilisez la fonction intégrée callable() à la place.Retourne vrai si l'objet o peut être appelé comme une fonction, sinon retourne faux. On retourne vrai pour les fonctions, les méthodes liées ou non liées, les objets classe, et les objets instance qui supportent la méthode __call__().

isMappingType(o)
Retourne vrai si l'objet o supporte l'interface des tables associatives. Ceci est vrai pour les dictionnaires et tous les objets instance. Avertissement: Il n'y a pas de façon sûre de tester si une instance supporte la totalité du protocole associatif parce que cette interface elle-même est mal définie. Cela rend ce test moins utile qu'il ne le serait autrement.

isNumberType(o)
Retourne vrai si l'objet o représente un nombre. Ceci est vrai pour tous les types numériques implémentés en C, et pour tous les objets instance. Avertissement: Il n'y a pas de façon sûre de tester si une instance supporte la totalité de l'interface numérique parce que cette interface elle-même est mal définie. Cela rend ce test moins utile qu'il ne le serait autrement.

isSequenceType(o)
Retourne vrai si l'objet o supporte le protocole séquence. Cette fonction retourne vrai pour tous les objets qui définissent des méthodes de séquences en C, et pour tous les objets instance. Avertissement: Il n'y a pas de façon sûre de tester si une instance supporte la totalité de l'interface séquence parce que cette interface elle-même est mal définie. Cela rend ce test moins utile qu'il ne le serait autrement.

Exemple: construire un dictionnaire qui associe aux ordinaux de 0 à 256 leurs équivalents en caractères.

>>> import operator
>>> d = {}
>>> keys = range(256)
>>> vals = map(chr, keys)
>>> map(operator.setitem, [d]*len(keys), keys, vals)