Introducción a los Operadores de Python
Aprende todos los tipos de operadores de Python — aritméticos, de comparación, de asignación, lógicos, bit a bit, de identidad y de pertenencia — con ejemplos y reglas de precedencia.
Los operadores son los símbolos y palabras clave que le indican a Python qué acción realizar sobre uno o más valores. Toda expresión significativa en Python — desde x + 1 hasta if age >= 18 — depende de al menos un operador. Python agrupa sus operadores en siete categorías: aritméticos, de comparación, de asignación, lógicos, de identidad, de pertenencia y bit a bit. Este capítulo explica cada categoría, muestra cuándo usarla y destaca los errores más comunes.
Operadores Aritméticos
Los operadores aritméticos realizan cálculos matemáticos. Python proporciona siete de ellos:
| Operador | Nombre | Ejemplo | Resultado |
|---|---|---|---|
+ | Suma | 17 + 5 | 22 |
- | Resta | 17 - 5 | 12 |
* | Multiplicación | 17 * 5 | 85 |
/ | División | 17 / 5 | 3.4 |
% | Módulo (resto) | 17 % 5 | 2 |
** | Exponenciación | 2 ** 8 | 256 |
// | División entera | 17 // 5 | 3 |
Dos operadores merecen especial atención:
/siempre devuelve unfloaten Python 3, incluso al dividir dos enteros (4 / 2devuelve2.0, no2).//(división entera) redondea el resultado hacia el infinito negativo, no hacia cero. Por eso-7 // 2es-4, no-3.
Uso habitual: comprobar par o impar
El operador módulo (%) es la forma estándar de comprobar la divisibilidad:
number = 42
if number % 2 == 0:
print("even")
else:
print("odd")
# Output: evenOperadores de Comparación
Los operadores de comparación comparan dos valores y siempre devuelven True o False. Se usan en condiciones, bucles while y en cualquier lugar donde se necesite un resultado booleano.
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
== | Igual a | 5 == 5 | True |
!= | Distinto de | 5 != 3 | True |
> | Mayor que | 5 > 3 | True |
< | Menor que | 5 < 3 | False |
>= | Mayor o igual que | 5 >= 5 | True |
<= | Menor o igual que | 5 <= 4 | False |
Encadenamiento de comparaciones
Python permite encadenar múltiples comparaciones en una sola expresión, lo que resulta más natural que en la mayoría de los otros lenguajes:
x = 7
print(1 < x < 10) # True — equivalent to (1 < x) and (x < 10)
print(0 < x < 5) # FalseError común: == vs =
= es el operador de asignación; == comprueba la igualdad. Usar = dentro de una condición provoca un SyntaxError en Python (a diferencia de otros lenguajes donde asigna silenciosamente).
Operadores de Asignación
Los operadores de asignación almacenan valores en variables. Las formas compuestas (+=, -=, …) combinan una operación aritmética o bit a bit con la asignación, haciendo el código más conciso.
| Operador | Equivalente a | Ejemplo |
|---|---|---|
= | — | x = 10 |
+= | x = x + n | x += 3 |
-= | x = x - n | x -= 3 |
*= | x = x * n | x *= 3 |
/= | x = x / n | x /= 3 |
//= | x = x // n | x //= 3 |
%= | x = x % n | x %= 3 |
**= | x = x ** n | x **= 3 |
&= | x = x & n | x &= 0b1111 |
|= | x = x | n | x |= 0b1000 |
^= | x = x ^ n | x ^= 0b0101 |
<<= | x = x << n | x <<= 1 |
>>= | x = x >> n | x >>= 1 |
El operador morsa := (Python 3.8+)
El operador morsa asigna un valor dentro de una expresión. Es útil cuando se quiere evaluar y almacenar un resultado sin escribir la expresión dos veces:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# Without walrus: compute length twice
if len(numbers) > 5:
print(f"Long list: {len(numbers)} items")
# With walrus: assign once, use in condition and body
if (n := len(numbers)) > 5:
print(f"Long list: {n} items")
# Output: Long list: 10 itemsOperadores Lógicos
Los operadores lógicos combinan o invierten expresiones booleanas. Python usa palabras clave en inglés en lugar de símbolos (&&, ||, !).
| Operador | Significado | Ejemplo | Resultado |
|---|---|---|---|
and | Verdadero si ambos lados son verdaderos | True and False | False |
or | Verdadero si al menos uno de los lados es verdadero | True or False | True |
not | Invierte el valor booleano | not True | False |
Evaluación en cortocircuito
Python evalúa and y or de forma perezosa (de izquierda a derecha) y se detiene en cuanto el resultado queda determinado:
False and <anything>— el lado derecho nunca se evalúa.True or <anything>— el lado derecho nunca se evalúa.
Esto importa cuando el lado derecho tiene un efecto secundario o podría lanzar un error:
user_input = ""
name = user_input or "Anonymous"
print(name) # Anonymous (empty string is falsy, so "Anonymous" is returned)Valores verdaderos y falsos
Los operadores lógicos funcionan con cualquier valor, no solo con True/False. Python trata 0, "", None, [], {} y () como falsos; todo lo demás es verdadero.
Consulta el capítulo Python Data Types para ver la lista completa de valores falsos por tipo.
Operadores de Identidad
Los operadores de identidad comprueban si dos variables apuntan al mismo objeto en memoria, no solo si contienen valores iguales.
| Operador | Significado |
|---|---|
is | True si ambas variables referencian el mismo objeto |
is not | True si referencian objetos distintos |
Cuándo usar is vs ==
Usa is solo cuando quieras comprobar deliberadamente la identidad del objeto — lo más habitual es al comparar con singletons:
value = None
if value is None: # correct idiom
print("No value provided")
# Never do: if value == None — works but is considered bad stylePython almacena en caché los enteros pequeños (normalmente de -5 a 256) y las cadenas internadas, por lo que a is b puede devolver True para dos enteros pequeños creados por separado. Nunca confíes en este comportamiento para enteros o string — usa == para comparar valores.
Operadores de Pertenencia
Los operadores de pertenencia comprueban si un valor existe dentro de una secuencia (lista, tupla, string, conjunto o diccionario).
| Operador | Significado |
|---|---|
in | True si el valor se encuentra en la secuencia |
not in | True si el valor no se encuentra |
Nota sobre el rendimiento
Para listas y tuplas, in comprueba cada elemento de forma secuencial (O(n)). Para conjuntos y claves de diccionario, in usa una tabla hash y se ejecuta en tiempo constante (O(1)). Prefiere un set cuando necesites realizar muchas comprobaciones de pertenencia en una colección grande.
Operadores Bit a Bit
Los operadores bit a bit trabajan sobre la representación binaria de los enteros, manipulando bits individuales.
| Operador | Nombre | Ejemplo | Resultado | Notas |
|---|---|---|---|---|
& | AND | 5 & 3 | 1 | El bit es 1 solo si ambos bits son 1 |
| | OR | 5 | 3 | 7 | El bit es 1 si alguno de los bits es 1 |
^ | XOR | 5 ^ 3 | 6 | El bit es 1 si los bits difieren |
~ | NOT | ~5 | -6 | Invierte todos los bits; el resultado es -(n+1) |
<< | Desplazamiento a la izquierda | 5 << 1 | 10 | Desplaza bits a la izquierda (multiplica por 2) |
>> | Desplazamiento a la derecha | 20 >> 2 | 5 | Desplaza bits a la derecha (divide por 2) |
Por qué importan los operadores bit a bit
En el código Python cotidiano no usarás los operadores bit a bit directamente, pero aparecen con frecuencia en:
- Banderas y permisos — combinar máscaras de bits para representar múltiples opciones en un solo entero.
- Criptografía y hashing — XOR es un componente básico fundamental.
- Matemáticas eficientes —
n << 1es más rápido quen * 2en bucles de rendimiento crítico. - Trabajo con protocolos binarios — análisis de paquetes de red o cabeceras de archivos.
Precedencia de Operadores
Cuando una expresión mezcla varios operadores, Python los evalúa en un orden fijo (mayor precedencia primero):
| Prioridad | Operadores |
|---|---|
| 1 (mayor) | ** |
| 2 | +x, -x, ~x (unarios) |
| 3 | *, /, //, % |
| 4 | +, - |
| 5 | <<, >> |
| 6 | & |
| 7 | ^ |
| 8 | | |
| 9 | ==, !=, <, >, <=, >=, is, is not, in, not in |
| 10 | not |
| 11 | and |
| 12 (menor) | or |
# Multiplication before addition (standard math rules apply)
print(2 + 3 * 4) # 14, not 20
# Use parentheses to override
print((2 + 3) * 4) # 20
# ** is right-associative: 2 ** 3 ** 2 = 2 ** (3**2) = 2**9
print(2 ** 3 ** 2) # 512, not 64
# Comparisons before logical operators
print(2 + 3 > 4 and 10 % 3 == 1) # True and True → TrueEn caso de duda, usa paréntesis. Hacen explícita la precedencia y mejoran la legibilidad.
Resumen
| Categoría | Operadores | Uso principal |
|---|---|---|
| Aritméticos | + - * / % ** // | Cálculos matemáticos |
| Comparación | == != > < >= <= | Condiciones, filtrado |
| Asignación | = += -= *= /= //= %= **= &= |= ^= <<= >>= | Almacenar y actualizar variables |
| Lógicos | and or not | Combinar condiciones booleanas |
| Identidad | is is not | Comprobaciones de singleton (p. ej. is None) |
| Pertenencia | in not in | Búsqueda en secuencias y conjuntos |
| Bit a bit | & | ^ ~ << >> | Banderas binarias, datos de bajo nivel |
Para temas relacionados, consulta Python Variables, Python If...Else y Python Data Types.