Precedencia de Operadores en Python

PythonBeginner
Practicar Ahora

Introducción

En este laboratorio, obtendrá una comprensión práctica de la precedencia de operadores en Python. Al igual que en matemáticas, Python sigue reglas específicas para determinar el orden en que se realizan las operaciones dentro de una expresión. Un dominio sólido de estas reglas es esencial para escribir código que sea a la vez correcto e predecible.

Comenzaremos explorando la precedencia de los operadores aritméticos básicos. Luego, veremos cómo los operadores de nivel superior, como la exponenciación y la comparación, encajan en la jerarquía. Finalmente, aprenderá a usar paréntesis para anular el orden de operaciones predeterminado, una técnica crucial tanto para controlar los cálculos como para mejorar la legibilidad del código.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Precedencia Aritmética Básica

En Python, al igual que en las matemáticas estándar, algunos operadores aritméticos tienen una precedencia mayor que otros. Específicamente, la multiplicación (*) y la división (/) se realizan antes que la suma (+) y la resta (-). Cuando los operadores tienen la misma precedencia, se evalúan de izquierda a derecha.

Observemos este comportamiento. El proceso de configuración ya ha creado un archivo para usted. En el explorador de archivos del WebIDE a la izquierda, busque y abra el archivo llamado operator_precedence.py ubicado en el directorio ~/project.

Agregue el siguiente código al archivo:

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

Esta expresión contiene suma, multiplicación, resta y división. Predigamos el orden de las operaciones:

  1. Python primero realizará la multiplicación: 4 * 3 es igual a 12.
  2. A continuación, realizará la división: 10 / 5 es igual a 2.0. Tenga en cuenta que la división estándar en Python 3 siempre da como resultado un número de punto flotante (float).
  3. La expresión ahora es 10 + 12 - 2.0.
  4. Finalmente, realizará la suma y la resta de izquierda a derecha: 10 + 12 es 22, y 22 - 2.0 es 20.0.

Guarde el archivo presionando Ctrl + S. Para ejecutar el código, abra una terminal en el WebIDE (Terminal -> New Terminal) y ejecute el siguiente comando:

python ~/project/operator_precedence.py

Verá el resultado calculado impreso en la terminal.

20.0

La salida coincide con nuestra predicción, confirmando la precedencia de la multiplicación y la división sobre la suma y la resta.

Operadores de Nivel Superior

La jerarquía de operadores de Python se extiende más allá de la aritmética básica. El operador de exponenciación (**) tiene una precedencia mayor que la multiplicación y la división. Además, todos los operadores aritméticos tienen una precedencia mayor que los operadores de comparación como "mayor que" (>).

Agreguemos más ejemplos a nuestro script para ver esto en acción. Modifique el archivo ~/project/operator_precedence.py para incluir dos nuevas expresiones:

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

## Exponentiation has higher precedence than multiplication.
exp_result = 2 * 3 ** 2
print(exp_result)

## Arithmetic operators have higher precedence than comparison operators.
comp_result = 18 > 5 + 10
print(comp_result)

Analicemos las nuevas líneas:

  1. En 2 * 3 ** 2, la exponenciación 3 ** 2 se calcula primero, resultando en 9. Luego, se realiza la multiplicación 2 * 9, dando como resultado 18.
  2. En 18 > 5 + 10, la suma 5 + 10 se calcula primero, resultando en 15. Luego, se evalúa la comparación 18 > 15, que es True.

Guarde el archivo (Ctrl + S) y ejecute el script nuevamente.

python ~/project/operator_precedence.py

La terminal mostrará ahora los resultados de las tres expresiones.

20.0
18
True

Esto confirma que Python evalúa primero la exponenciación, seguida de otras operaciones aritméticas y, finalmente, las operaciones de comparación.

Uso de Paréntesis para Controlar el Orden de Evaluación

Si bien las reglas de precedencia de Python son consistentes, las expresiones complejas pueden ser difíciles de leer. Para anular el orden predeterminado o simplemente para dejar claras sus intenciones, puede usar paréntesis (). Cualquier expresión encerrada entre paréntesis se evalúa primero.

Modifiquemos uno de nuestros ejemplos anteriores para ver el efecto de los paréntesis. Agregue una nueva expresión al final de ~/project/operator_precedence.py.

## Multiplication and division are evaluated before addition and subtraction.
result = 10 + 4 * 3 - 10 / 5
print(result)

## Exponentiation has higher precedence than multiplication.
exp_result = 2 * 3 ** 2
print(exp_result)

## Arithmetic operators have higher precedence than comparison operators.
comp_result = 18 > 5 + 10
print(comp_result)

## Using parentheses to change the order of evaluation.
forced_result = (10 + 4) * 3
print(forced_result)

Analicemos la nueva línea (10 + 4) * 3:

  1. Debido a que 10 + 4 está dentro de paréntesis, se evalúa primero, resultando en 14.
  2. Luego, se realiza la multiplicación 14 * 3, dando como resultado 42.

Esto es diferente de 10 + 4 * 3, que sabemos que se evalúa como 22. Los paréntesis cambiaron completamente el resultado.

Guarde el archivo y ejecute el script por última vez.

python ~/project/operator_precedence.py

La salida ahora incluirá el resultado de nuestra expresión entre paréntesis.

20.0
18
True
42

Usar paréntesis, incluso cuando no son estrictamente necesarios, es una buena práctica. Hace que el orden de las operaciones sea explícito, lo que mejora la legibilidad del código y reduce la posibilidad de errores causados por malentendidos de la precedencia.

Resumen

En este laboratorio, ha explorado el concepto fundamental de la precedencia de operadores en Python. Comenzó con la aritmética básica, confirmando que la multiplicación y la división tienen prioridad sobre la suma y la resta. Luego aprendió que otros operadores, como la exponenciación y la comparación, tienen su propio lugar en la jerarquía.

Lo más importante es que practicó el uso de paréntesis para controlar explícitamente el orden de evaluación. Esta habilidad es vital para escribir código que no solo sea funcionalmente correcto, sino también claro y fácil de entender para otros. Al dominar la precedencia de operadores, ha dado un paso significativo hacia la escritura de programas Python más robustos y confiables.