post

Python sp-ar:Operadores y Expresiones

Contents

Introducción

La mayoría de los enunciados (líneas lógicas) que uno escribe contienen expresiones. Un ejemplo simple de una expresión es 2 + 3. Una expresión puede separarse en operadores y operandos.

Los operadores son son caracteres que hacen alguna operación, como por ejemplo + o también otras palabras clave. Los operadores requieren datos para operar, y a estos datos se les llama operandos. En este caso, 2 y 3 son los operandos.

Operadores

Veremos brevemente lo que son los operadores, y su uso:

Note que puede evaluar interactivamente las expresiones dadas en los ejemplos usando el intérprete. Por ejemplo, para probar la expresión 2 + 3, use el intérprete interactivo de Python:

>>> 2 + 3
5
>>> 3 * 5
15
>>>
Operadores y su uso

Operador

Nombre

Explicación

Ejemplos

+

Suma.

Suma los dos objetos.

3 + 5 da 8. 'a' + 'b' da 'ab'.

Menos.

Da un numero negativo o la resta entre dos números.

-5.2 Da un número negativo. 50 - 24 da 26.

*

Multiplicación.

Da la multiplicación de dos números o retorna una cadena repetida tantas veces.

2 * 3 da 6. 'la' * 3 da 'lalala'.

**

Potencia.

Retorna x a la potencia de y.

3 ** 4 da 81 (es decir: 3 * 3 * 3 * 3).

/

Division.

Divide x entre y.

4 / 3 da 1.3333333333333333.

//

Division entera.

Retorna la parte entera del cociente.

4 // 3 da 1.

%

Modulo.

Retorna el resto de la división.

8% 3 da 2. -25.5% 2.25 da 1.5.

<<

Desplazamiento a la Izquierda.

Desplaza el numero de bits especificados un numero a la izquierda. (Cada numero es representado en memoria por bits o dígitos binarios, es decir 0 y 1).

2 << 2 da 8. 2 es representado por 10 en binario. Con un desplazamiento de 2 a la izquierda da 1000 el cual su representación decimal es 8.

>>

Desplazamiento a la Derecha.

Desplaza el numero de bits especificados un numero a la derecha.

11 >> 1 da 5. 11 es representado en binario por 1011 el cual cuando es desplazado por 1 da 101 el que es 5 en decimal.

&

AND bit a bit.

AND bit a bit para lo números.

5 & 3 da 1.

|

OR bit a bit.

OR bit a bit para los números.

5 | 3 da 7.

^

XOR bit a bit.

XOR bit a bit para los números.

5 ^ 3 da 6.

~

Invertir bit a bit.

La inversión bit a bit de x es -(x+1).

~5 da -6.

<

Menor que.

Retorna la comparación de si x es menor que y. Todos los operadores de comparación retornan True o False. Observe la mayúscula inicial de esos términos.

5 < 3 da False y 3 < 5 da True.

Las comparaciones pueden encadenarse arbitrariamente: 3 < 5 < 7 da True.

>

Mayor que.

Retorna la comparación de si x es mayor que y.

5 > 3 retorna True. Si los dos operandos son números son convertidos a un tipo común. De otra forma, siempre se retornara False.

<=

Menor o igual que.

Retorna la comparación de si x es menor o igual que y.

x = 3; y = 6; x <= y retorna True.

>=

Mayor o igual que.

Retorna la comparación de si x es mayor o igual que y.

x = 4; y = 3; x >= 3 retorna True.

==

Igual a.

Compara si dos objetos son iguales.

x = 2; y = 2; x == y retorna True.

x = 'str'; y = 'stR'; x == y retorna False.

x = 'str'; y = 'str'; x == y retorna True.

!=

Diferente a.

Compara si dos objetos son diferentes.

x = 2; y = 3; x!= y retorna True.

not

NOT Booleano.

Si x es True, este retornara False. Si x es False, este retornara True.

x = True; not x retorna False.

and

AND Booleano.

x and y retorna False si x es False, si no retornara la evaluación de y.

x = False; y = True; x and y retorna False por que x es False. En este caso Python no evaluara y por que sabe que el operador del lado izquierdo de la expresión ‘and’ es False lo cual implica que toda la expresión sera False independientemente del otro valor. Esto es llamado evaluación de corto circuito.

or

OR Booleano.

If x es True, este retornara True, si no retornara la evaluación de y.

x = True; y = False; x or y retornara True. También aquí aplica la evaluación de corto circuito.

Atajo para operaciones matemáticas y asignación

Es muy común hacer operaciones matemáticas con una variable y luego guardar el resultado de la operación en esta misma, por lo tango hay un atajo para este tipo de expresiones:

Usted puede escribir:

a = 2; a = a * 3

como:

a = 2; a *= 3

Observe que var = var operador expresión se vuelve var operador= expresión.

Orden de evaluación

Si tiene una expresión como 2 + 3 * 4, ¿Se hace primero la suma o la multiplicación?. Nuestras matemáticas de secundaria nos dicen que la multiplicación se debería hacer primero. Esto significa que el operador de multiplicación tiene una precedencia mas alta que operador de suma.

La siguiente es una tabla de precedencia para Python, empezando por la precedencia mas baja (menos obligatoria) hasta la mas alta (mas obligatoria). Entonces en una expresión dada, Python evaluara primero los operadores y expresiones que mas abajo estén en la tabla por sobre los que están mas arriba en esta.

La siguiente tabla es mostrada por su completitud y fue tomada de Python Manual de Referencia. Es mucho mejor agrupar operadores y operandos usando paréntesis para así especificar su precedencia y hacer que el programa sea mucho mas fácil de entender. Revise Cambiando el Orden de Evaluación abajo para mas detalles.

Precedencia de Operadores

Operador

Descripción

lambda

Expresión Lambda

or

OR Booleano

and

AND Booleano

not x

NOT Booleano

in, not in

Pruebas de membrecía

is, is not

Pruebas de identidad

<, <=, >, >=,!=, ==

Comparaciones

|

OR a nivel de bits

^

XOR a nivel de bits

&

AND a nivel de bits

<<, >>

Desplazamientos

+, –

Suma y resta

*, /, //, %

Multiplicación, División, División entera y modulo

+x, -x

Positivo, Negativo

~x

NOT a nivel de bits

**

Exponenciación

x.attribute

Alusión a un atributo

x[index]

Subscripción

x[index1:index2]

Recorriendo

f(arguments …)

Llamado a una función

(expressions, …)

Atando o desplegando una tupla

[expressions, …]

Desplegando una lista

{key:datum, …}

Desplegando un diccionario

Los operadores que aun no han sido vistos, se explicaran en capítulos posteriores.

En la tabla anterior los operadores con la misma precedencia son mostrados en la misma fila. Por ejemplo + y - tienen la misma precedencia.

Cambiando el orden de evaluación

Para hacer que las expresiones sean mas fáciles de leer podemos usar paréntesis. Por ejemplo, 2 + (3 * 4) es mas fácil de entender que 2 + 3 * 4, el cual requiere el conocimiento de la precedencia de los operadores. Además como con todo, el uso de los paréntesis debe ser razonable (no exagere) y no sea redundante (como en 2 + (3 + 4)).

Hay una ventaja adicional de usar paréntesis – estos nos ayudan a cambiar el orden de evaluación. Por ejemplo, si en una expresión quiere que la suma sea evaluada antes que la multiplicación puede escribir algo como (2 + 3) * 4.

Asociatividad

Los operadores son usualmente asociados de izquierda a derecha es decir si hay operadores con la misma precedencia se evalúan empezando izquierda y terminando derecha. Por ejemplo, 2 + 3 + 4 es evaluado como (2 + 3) + 4. Algunos operadores como el de asignación tienen asociatividad de derecha a izquierda es decir a = b = c es tratado como a = (b = c).

Expresiones

Ejemplo:

#!/usr/bin/python
# Archivo: expression.py

largo = 5
ancho = 2

area = largo * ancho
print('El área es', area)
print('El perímetro es', 2 * (largo + ancho))

Salida:

   $ python expression.py
   EL área es 10
   El perímetro es 14

Como funciona:

El largo y el ancho de un rectángulo son guardadas en variables con el mismo nombre. Nosotros con ayuda de las expresiones usamos estas para calcular el área y el perímetro del rectángulo. Luego almacenamos en la variable area el resultado de la expresión largo * ancho y lo imprimimos usando la función print. En el segundo caso con la función print usamos directamente el valor de la expresión 2 * (largo + ancho).

También, observe como Python ‘imprime claro’ la salida. Incluso si no especificamos un espacio entre 'El area es' y la variable area, Python lo pone por nosotros y así tenemos una clara y linda salida, además de esta manera el programa es mas fácil de leer (ya que no tenemos que preocuparnos por los espacios que usan las cadenas para la salida). Esto es un ejemplo de como Python le hace fácil la vida al programador.

Resumen

Hemos visto como usar operadores, operandos y expresiones – estos son los bloques de básicos de construcción para cualquier programa. Lo siguiente va a ser como utilizarlos estos en nuestros programas usando declaraciones.