3.8 operator -- Operadores estándar como funciones.

El módulo operator exporta un conjunto de funciones implementadas en C que se corresponden con los operadores intrínsecos de Python. Por ejemplo, operator.add(x, y) equivale a la expresión x+y. Los nombres de las funciones son los utilizados como métodos de clase especiales. Se proporcionan con y sin "__" al principio y al final por facilidad.

El módulso operator define las siguientes funciones:

add (a, b)
__add__ (a, b)
Devuelve a + b, siendo a y b números.

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

mul (a, b)
__mul__ (a, b)
Devuelve a * b, siendo a y b números.

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

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

neg (o)
__neg__ (o)
Devuelve o negado.

pos (o)
__pos__ (o)
Devuelve + o.

abs (o)
__abs__ (o)
Devuelve el valor absoluto de o.

inv (o)
__inv__ (o)
__invert__ (o)
Devuelve el inverso de o. Los nombres invert() y __invert__() fueron añadidos en Python 2.0.

lshift (a, b)
__lshift__ (a, b)
Devuelve a desplazado a la izquierda b bits.

rshift (a, b)
__rshift__ (a, b)
Devuelve a desplazado a la derecha b bits.

and_ (a, b)
__and__ (a, b)
Devuelve el Y lógico bit a bit de a y b.

or_ (a, b)
__or__ (a, b)
Devuelve el O lógico bit a bit de a y b.

xor (a, b)
__xor__ (a, b)
Devuelve el O exclusive lógico bit a bit de a y b.

not_ (o)
__not__ (o)
Devuelve el resultado de not o. No hay in método __not__() para instancias de objeto, esta operación sólo está definida por el núcleo del intérprete.

truth (o)
Devuelve 1 si o es cierto ó 0 en caso contrario.

concat (a, b)
__concat__ (a, b)
Devuelve a + b, siendo a y b secuencias.

repeat (a, b)
__repeat__ (a, b)
Devuelve a * b, donde a es una secuencia y b un entero.

contains (a, b)
__contains__ (a, b)
Devuelve el resultado de la comprobación b in a. Obsérvese el orden de los operandos. El nombre __contains__() fue añadido en Python 2.0.

sequenceIncludes (...)
Obsoleto a partir de la versión 2.0. Usar contains() en lugar de esto.

Alias de contains().

countOf (a, b)
Devuelve las veces que aparece b en a.

indexOf (a, b)
Devuelve el índice de la primera aparición de b en a.

getitem (a, b)
__getitem__ (a, b)
Devuelve el valor de a en su índice b.

setitem (a, b, c)
__setitem__ (a, b, c)
Establece el valor de a en su índice b al valor c.

delitem (a, b)
__delitem__ (a, b)
Elimina el valor de a en su índice b.

getslice (a, b, c)
__getslice__ (a, b, c)
Devuelve el corte de a desde el índice b hasta el c-1.

setslice (a, b, c, v)
__setslice__ (a, b, c, v)
Establece el valor del corte de a desde el índice b al c-1 a la secuencia v.

delslice (a, b, c)
__delslice__ (a, b, c)
Elimina el corte de a desde su índice b al c-1.

El módulo operator también define unos cuantos predicados para comprobar el tipo de los objetos Nota: No se debe malinterpretar el resultado de estas funciones, sólo isCallable() tiene cierta fiabilidad con instancias de objetos. Por ejemplo:

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

isCallable (o)
Obsoleto a partir de la versión 2.0. Usar la función interna callable() en lugar de ésta.

Devuelve el valor verdadero si el objeto o puede llamarse como función, falso en caso contrario. Se devuelve verdadero para las funciones, métodos enlazados o no, e instancias de objetos que soportan el método __call__().

isMappingType (o)
Devuelve verdadero si el objeto o soporta la interfaz de correspondencia (como los diccionarios). Es verdadero para los diccionarios y los objetos instancia. Aviso: No hay un modo fiable de verificar si una instancia soporta la interfaz de correspondencia completa, pues la interfaz misma está débilmente definida. Esto hace que esta comprobación no sea tan útil como se podría desear.

isNumberType (o)
Devuelve verdadero si el objeto o representa un número. Es cierto para todos los números implementados en C y para todos los objetos instancia. Aviso: No hay un modo fiable de verificar si una instancia soporta la interfaz de número completa, pues la interfaz misma está débilmente definida. Esto hace que esta comprobación no sea tan útil como se podría desear.

isSequenceType (o)
Devuelve verdadero si el objeto o soporta la interfaz de secuencia (como las listas). Es verdadero para todos los objetos que definen métodos de secuencia en C y los objetos instancia. Aviso: No hay un modo fiable de verificar si una instancia soporta la interfaz de secuencia completa, pues la interfaz misma está débilmente definida. Esto hace que esta comprobación no sea tan útil como se podría desear.

Ejemplo: Construir un diccionario que haga corresponder los ordinales desde0 a 256 a sus caracteres correspondientes.

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

Ver Sobre este documento... para obtener información sobre sugerencias.