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
+ b où a et b sont des séquences.
repeat(a, b)
- __repeat__(a, b)
- Retourne a
* b où a 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)