Al igual que en matemáticas, los lenguajes de programación como Python tienen operadores. Puedes pensar en ellas como funciones extremadamente sencillas que están en la base de la informática. Son las operaciones más sencillas a las que se puede reducir un programa informático. Son conocimientos esenciales para cualquier aspirante a Científico de Datos o Ingeniero de Software.
Probablemente ya estés familiarizado con ellas, puesto que proceden de las matemáticas básicas.
Los operadores aritméticos son la suma (+), la resta (-), la multiplicación (*), la división (/), el exponente (**), la división por el suelo (//) y el módulo (%). Las cuatro primeras son bastante sencillas: suma, resta, multiplicación y división, y probablemente ya estés familiarizado con ellas.
# Additionprint(5+2)# Subtractionprint(5-2)# Multiplicationprint(5*2)# Divisionprint(5/2)Con la tecnología de
Los otros tres son un poco más complicados. El operador exponente significa "elevado a la potencia de". Por ejemplo, 2 ** 3 significa que 2 se multiplica por sí mismo 3 veces, por lo que 2 ** 3 es igual a 2 * 2 * 2, que es igual a 8.
La división por el suelo es igual que la división normal, salvo que el resultado siempre se redondea a la parte inferior. En el ejemplo siguiente, 5 se divide por 2, lo que da 2,5. Pero como es la división de suelo, 2,5 se redondea a 2.
Por último, el módulo es el resto tras la división. En el caso de 5%2, el número 2 sólo cabe dos veces en 5, lo que significa que el restante es 1.
# Exponentprint(5**2)# This is the same as 5 * 5# Floor Divisionprint(5//2)# Modulusprint(5%2)Con la tecnología de
Si tienes alguna experiencia en programación, seguro que habrás utilizado antes los operadores de asignación. Asignan un valor determinado a una variable. El más utilizado es =. Para utilizarla, sólo tienes que escribir el nombre de la variable a la que quieres asignar un nuevo valor, la dirección =, y el valor que quieres que se asigne. Por ejemplo, si quieres asignar el valor 100 a la variable balance, puedes hacer lo siguiente:
Los demás operadores de asignación funcionan exactamente igual. Estos son:
*=
/=
**=
//=
%=
Operadores de comparación
Puedes utilizar operadores de comparación para, lo has adivinado, comparar los valores de las variables. Siempre devolverán un valor booleano, que puede ser True o False. Son seis:
a =3
b =5print(a == b)# Equalprint(a != b)# Not equalprint(a > b)# Greater thanprint(a < b)# Less thanprint(a >= b)# Greater than or equal toprint(a <= b)# Less than or equal toCon la tecnología de
== y != también se pueden utilizar para comparar cadenas en lugar de números. Los demás operadores no son compatibles con las cadenas, ya que una cadena no puede ser realmente mayor que otra cadena.
Recuerda que antes has visto cómo + se puede utilizar para sumar números, pero que también se puede utilizar para concatenar, o combinar cadenas. Así que + funciona de forma diferente, según el tipo de objeto sobre el que lo utilices. Pero no siempre será así. A veces, el operador con el que trabajas simplemente no admite el tipo de objeto en el que quieres utilizarlo.
He aquí un ejemplo. Digamos que tienes dos objetos Dog, ozzy y filou. Pertenecen a la clase Dog siguiente. Puedes pensar en la clase como un plano del aspecto que deben tener los objetos y de cómo deben comportarse. En este caso, los objetos Dog tienen un nombre, una edad y una altura. Una vez definida la clase, puedes instanciar objetos. Uno de ellos es Ozzy, con una edad de 3 años y una altura de 30 centímetros. El otro es Filou, tiene 5 años y mide 65 centímetros.
Este ejemplo utiliza el concepto de Programación Orientada a Objetos. Si quieres saber más al respecto, no dejes de leer nuestro tutorial sobre Programación Orientada a Objetos en Python
Supongamos que quieres comparar ambos perros con el mayor que: >. Esto no funcionará. Aparecerá un error que dice '>' not supported between instances of 'Dog' and 'Dog'. Esto significa que > no sabe cómo comparar objetos de la clase Dog.
classDog:def__init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
ozzy = Dog("Ozzy",3,30)
filou = Dog("Filou",5,65)print(filou > ozzy)Con la tecnología de
---------------------------------------------------------------------------
TypeError Traceback(most recent call last)<ipython-input-96-428069ab24cc>in<module>()9 filou =Dog("Filou",5,65)10--->11print(filou > ozzy)TypeError:'>' not supported between instances of'Dog' and 'Dog'Con la tecnología de
Por suerte, con la sobrecarga de operadores, puedes definir el comportamiento del operador para cuando se llame a objetos Dog. En este caso, hay que definir un método llamado __gt__, que significa "mayor que", y que toma dos argumentos. Como queremos comparar a nuestros perros por su altura, el método devuelve self.height > other.height.
classDog:def__init__(self, name, age, height):
self.name = name
self.age = age
self.height = height
def__gt__(self,other):return self.height > other.height
ozzy = Dog("Ozzy",3,30)
filou = Dog("Filou",5,65)print(filou > ozzy)print(ozzy > filou)Con la tecnología de
¿Cómo sabes cuál se ejecutará primero? ¿Cómo debes leer una línea de código con muchos de estos símbolos? ¿Se ejecuta de izquierda a derecha o hay algún orden específico?
Aquí es donde entra en juego la precedencia. Los operadores de Python se ejecutan en un orden muy concreto, y algunos tienen prioridad sobre otros.
En la tabla siguiente, puedes ver la precedencia de los operadores, ordenados de arriba a abajo. Estas reglas son las mismas en matemáticas, donde ciertos cálculos de una fórmula deben realizarse antes que otros.
Precedencia
Operario
Descripción
1
**
exponente
2
*, /, %, //
multiplicar, dividir, módulo, división por el suelo
3
+, -
más, menos
4
>, <, >=, <=
comparación
5
==, !=
igualdad
6
= %= /= //= -= += *= **=
asignación
7
y, o, no
lógico
Asociatividad
¡Ya has visto que la precedencia importa! ¿Pero qué pasa con las que están en el mismo nivel de precedencia, como la multiplicación y la división? ¿Se ejecutan al mismo tiempo? No. *, \, % y \\ se ejecutan de izquierda a derecha, mientras que ** se ejecuta de derecha a izquierda. Esto se llama asociatividad.
Mira el siguiente ejemplo. En este caso, los operadores se ejecutarán de izquierda a derecha, y la salida es 3.
Sin embargo, si añades paréntesis, puedes cambiar el orden de ejecución de los operadores. Es la asociatividad, que funciona igual que la asociatividad en matemáticas. Lo que esté entre paréntesis se calculará primero. En este caso, primero se realizará la división por el suelo, seguida de la multiplicación.
Ahora ya sabes qué son los operadores, cómo debes utilizarlos y cómo funcionan. También has aprendido sobre sobrecarga, precedencia y asociatividad. ¡Vas por buen camino para convertirte en un maestro de Python! Si quieres aprender aún más, no dudes en consultar nuestro curso Python Intermedio para la Ciencia de Datos.
Descubre cómo escribir funciones en Python reutilizables y eficientes. Domina los parámetros, las sentencias return y temas avanzados como las funciones lambda. Organiza mejor tu código con main() y otras buenas prácticas.
Introdúcete en las estructuras de datos de Python: aprende más sobre tipos de datos y estructuras de datos primitivas y no primitivas, como cadenas, listas, pilas, etc.
Aprende sobre los conjuntos en Python: qué son, cómo crearlos, cuándo usarlos, funciones incorporadas y su relación con las operaciones de la teoría de conjuntos.
En este tutorial de Python verás la conversión implícita y explícita de tipos en estructuras primitivas y no primitivas con ayuda de ejemplos de código.
Al igual que en matemáticas, los lenguajes de programación como Python tienen operadores. Puedes pensar en ellas como funciones extremadamente sencillas que están en la base de la informática. Son las operaciones más sencillas a las que se puede reducir un programa informático. Son conocimientos esenciales para cualquier aspirante a Científico de Datos o Ingeniero de Software.
En este tutorial, aprenderás sobre
Si quieres aprender más sobre los fundamentos del lenguaje de programación Python, asegúrate de consultar nuestro curso gratuito Introducción a Python para la Ciencia de Datos.
Operadores aritméticos
Probablemente ya estés familiarizado con ellas, puesto que proceden de las matemáticas básicas.
Los operadores aritméticos son la suma (
+), la resta (-), la multiplicación (*), la división (/), el exponente (**), la división por el suelo (//) y el módulo (%). Las cuatro primeras son bastante sencillas: suma, resta, multiplicación y división, y probablemente ya estés familiarizado con ellas.Los otros tres son un poco más complicados. El operador exponente significa "elevado a la potencia de". Por ejemplo,
2 ** 3significa que2se multiplica por sí mismo3veces, por lo que2 ** 3es igual a2 * 2 * 2, que es igual a 8.La división por el suelo es igual que la división normal, salvo que el resultado siempre se redondea a la parte inferior. En el ejemplo siguiente, 5 se divide por 2, lo que da 2,5. Pero como es la división de suelo, 2,5 se redondea a 2.
Por último, el módulo es el resto tras la división. En el caso de
5%2, el número 2 sólo cabe dos veces en 5, lo que significa que el restante es 1.En Python, el operador de suma también se puede utilizar para concatenar cadenas. Esto significa que se ensamblarán en una sola cadena, por ejemplo:
Operadores de asignación
Si tienes alguna experiencia en programación, seguro que habrás utilizado antes los operadores de asignación. Asignan un valor determinado a una variable. El más utilizado es
=. Para utilizarla, sólo tienes que escribir el nombre de la variable a la que quieres asignar un nuevo valor, la dirección=, y el valor que quieres que se asigne. Por ejemplo, si quieres asignar el valor 100 a la variablebalance, puedes hacer lo siguiente:Si quieres incrementar el valor de
balancecon 10, puedes utilizarbalance += 10. Es el equivalente abalance = balance + 10, pero es mucho más corto.Lo mismo ocurre con
-=,balance -= 10es lo mismo quebalance = balance - 10:Los demás operadores de asignación funcionan exactamente igual. Estos son:
*=/=**=//=%=Operadores de comparación
Puedes utilizar operadores de comparación para, lo has adivinado, comparar los valores de las variables. Siempre devolverán un valor booleano, que puede ser
TrueoFalse. Son seis:==!=><>=<=He aquí algunos ejemplos de comparación:
==y!=también se pueden utilizar para comparar cadenas en lugar de números. Los demás operadores no son compatibles con las cadenas, ya que una cadena no puede ser realmente mayor que otra cadena.Operadores lógicos
Puede que ya los conozcas. En lógica, se denominan conectivas lógicas. También se utilizan mucho en el lenguaje humano. Son:
and,orynot.andsólo devolverá Verdadero si ambos operandos (los dos objetos booleanos que estás comparando) son Verdaderos. Por ejemplo:Para comprender el comportamiento de este operador lógico, puedes utilizar una tabla verdadero-falso:
ores Verdadero, siempre que cualquier (uno o más) operando sea Verdadero.Observa que también funcionan con más de dos operandos, por ejemplo:
notdevolverá lo contrario de su operando, así queTruesi se daFalsey viceversa.Sobrecarga de operadores
Recuerda que antes has visto cómo
+se puede utilizar para sumar números, pero que también se puede utilizar para concatenar, o combinar cadenas. Así que+funciona de forma diferente, según el tipo de objeto sobre el que lo utilices. Pero no siempre será así. A veces, el operador con el que trabajas simplemente no admite el tipo de objeto en el que quieres utilizarlo.He aquí un ejemplo. Digamos que tienes dos objetos
Dog,ozzyyfilou. Pertenecen a la claseDogsiguiente. Puedes pensar en la clase como un plano del aspecto que deben tener los objetos y de cómo deben comportarse. En este caso, los objetosDogtienen un nombre, una edad y una altura. Una vez definida la clase, puedes instanciar objetos. Uno de ellos es Ozzy, con una edad de 3 años y una altura de 30 centímetros. El otro es Filou, tiene 5 años y mide 65 centímetros.Este ejemplo utiliza el concepto de Programación Orientada a Objetos. Si quieres saber más al respecto, no dejes de leer nuestro tutorial sobre Programación Orientada a Objetos en Python
Supongamos que quieres comparar ambos perros con el mayor que:
>. Esto no funcionará. Aparecerá un error que dice'>' not supported between instances of 'Dog' and 'Dog'. Esto significa que>no sabe cómo comparar objetos de la claseDog.Por suerte, con la sobrecarga de operadores, puedes definir el comportamiento del operador para cuando se llame a objetos
Dog. En este caso, hay que definir un método llamado__gt__, que significa "mayor que", y que toma dos argumentos. Como queremos comparar a nuestros perros por su altura, el método devuelveself.height > other.height.Precedencia
Cuando combinas muchos operadores, las cosas pueden resultar confusas. Mira el siguiente ejemplo:
¿Cómo sabes cuál se ejecutará primero? ¿Cómo debes leer una línea de código con muchos de estos símbolos? ¿Se ejecuta de izquierda a derecha o hay algún orden específico?
Aquí es donde entra en juego la precedencia. Los operadores de Python se ejecutan en un orden muy concreto, y algunos tienen prioridad sobre otros.
En la tabla siguiente, puedes ver la precedencia de los operadores, ordenados de arriba a abajo. Estas reglas son las mismas en matemáticas, donde ciertos cálculos de una fórmula deben realizarse antes que otros.
Asociatividad
¡Ya has visto que la precedencia importa! ¿Pero qué pasa con las que están en el mismo nivel de precedencia, como la multiplicación y la división? ¿Se ejecutan al mismo tiempo? No.
*,\,%y\\se ejecutan de izquierda a derecha, mientras que**se ejecuta de derecha a izquierda. Esto se llama asociatividad.Mira el siguiente ejemplo. En este caso, los operadores se ejecutarán de izquierda a derecha, y la salida es 3.
Sin embargo, si añades paréntesis, puedes cambiar el orden de ejecución de los operadores. Es la asociatividad, que funciona igual que la asociatividad en matemáticas. Lo que esté entre paréntesis se calculará primero. En este caso, primero se realizará la división por el suelo, seguida de la multiplicación.
Conclusión
Ahora ya sabes qué son los operadores, cómo debes utilizarlos y cómo funcionan. También has aprendido sobre sobrecarga, precedencia y asociatividad. ¡Vas por buen camino para convertirte en un maestro de Python! Si quieres aprender aún más, no dudes en consultar nuestro curso Python Intermedio para la Ciencia de Datos.