Data Science para marketing

Creado por Nicolás Labbé

Introducción a Python y Fundamentos Básicos

Sintáxis

“Conjunto de reglas que define cómo deben escribirse las instrucciones en un lenguaje de programación para que sean válidas y puedan ser interpretadas correctamente por el computador (o, más específicamente, por el compilador o intérprete del lenguaje).”

Ejemplo

						
							print("Hello, World!")
						
					

Indentación en Python

La indentación se refiere a los espacios al principio de una línea de código. Mientras que en otros lenguajes de programación la sangría solo se utiliza para facilitar la lectura, en Python es muy importante.

✅ Ejemplo

Python utiliza la indentación para indicar un bloque de código.

						
							if 5 > 2:
  								print("Five is greater than two!")
						
					

❌ Ejemplo

Python te dará un error si omites la indentación:

						
							if 5 > 2:
							print("Five is greater than two!")
						
					

✅ Ejemplo

La cantidad de espacios depende del programador, el uso más común es cuatro, pero tiene que ser al menos uno.

						
							if 5 > 2:
							 print("Five is greater than two!") 
							if 5 > 2:
							        print("Five is greater than two!") 
						
					

❌ Ejemplo

Debes utilizar la misma cantidad de espacios en el mismo bloque de código, de lo contrario, Python te dará un error:

						
							if 5 > 2:
							 print("Five is greater than two!")
							        print("Five is greater than two!")
						
					

Comentarios en Python

  • Los comentarios se pueden usar para explicar el código Python.
  • Se pueden usar para que el código sea más legible.
  • Se pueden usar para evitar la ejecución al probar el código.

Creando un comentario

Los comentarios comienzan con un # y Python los ignorará:

						
							>>> print("Hello, World!") #This is a comment
							Hello, World!
						
					

Los comentarios se pueden colocar al final de una línea y Python ignorará el resto de la línea:

						
							>>> print("Hello, World!") #This is a comment
							Hello, World!
						
					

Un comentario no tiene que ser necesariamente un texto que explique el código, también puede usarse para evitar que Python ejecute código:

						
							>>> #print("Hello, World!")
							>>> print("Cheers, Mate!")
							Cheers, Mate!
						
					

Comentarios multilínea

Python no tiene una sintaxis específica para comentarios multilínea.

Para añadir un comentario multilínea, se puede insertar un signo # en cada línea:

						
							>>> #This is a comment
							>>> #written in
							>>> #more than just one line
							>>> print("Hello, World!")
							Hello, World!
						
					

O, aunque no sea del todo como se esperaba, puedes usar una cadena multilínea.

Como Python ignora las cadenas literales que no están asignadas a una variable, puedes añadir una cadena multilínea (entre comillas triples) a tu código y colocar tu comentario dentro:

						
							>>> """
							... This is a comment
							... written in
							... more than just one line
							... """
							>>> print("Hello, World!")
							Hello, World!
						
					

Variables en Python

Las variables son contenedores para almacenar valores de datos.

Creación de variables

Python no tiene ningún comando para declarar una variable.

Una variable se crea en el momento en que se le asigna un valor por primera vez.

						
							>>> x = 5
							>>> y = "John"
							>>> print(x)
							5
							>>> print(y)
							John
						
					

Las variables no necesitan declararse con ningún tipo particular, e incluso pueden cambiar de tipo después de haber sido configuradas.

						
							>>> x = 4       # x is of type int
							>>> x = "Sally" # x is now of type str
							>>> print(x)
							Sally							
						
					

Casting

Si desea especificar el tipo de datos de una variable, esto se puede hacer mediante conversión.

						
							x = str(3)    # x will be '3'
							y = int(3)    # y will be 3
							z = float(3)  # z will be 3.0
						
					

Obtener el tipo

Puede obtener el tipo de dato de una variable con la función type().

						
							>>> x = 5
							>>> y = "John"
							>>> print(type(x))
							
							>>> print(type(y))
							
						
					

¿Comillas simples o dobles?

Las variables de cadena se pueden declarar usando comillas simples o dobles:

						
							x = "John"
							# is the same as
							x = 'John'
						
					

Case-Sensitive

Los nombres de las variables distinguen entre mayúsculas y minúsculas.

						
							a = 4
							A = "Sally"
							#A will not overwrite a
						
					

Nombres de variables

Una variable puede tener un nombre corto (como x e y) o uno más descriptivo (edad, nombre_del_coche, volumen_total).

Reglas para las variables de Python

  • El nombre de una variable debe comenzar con una letra o un guion bajo.
  • El nombre de una variable no puede comenzar con un número.
  • El nombre de una variable solo puede contener caracteres alfanuméricos y guiones bajos (A-z, 0-9 y _).
  • Los nombres de las variables distinguen entre mayúsculas y minúsculas (edad, Edad y EDAD son tres variables diferentes).
  • El nombre de una variable no puede ser ninguna de las palabras clave de Python.

✅ Ejemplo

Nombres de variables válidos:

						
							myvar = "John"
							my_var = "John"
							_my_var = "John"
							myVar = "John"
							MYVAR = "John"
							myvar2 = "John"
						
					

❌ Ejemplo

Nombres de variables inválidos:

						
							2myvar = "John"
							my-var = "John"
							my var = "John"
						
					

Nombres de variables con varias palabras

Los nombres de variables con más de una palabra pueden ser difíciles de leer.

En Python, la convención de nombres para variables sigue principalmente las recomendaciones establecidas en el PEP 8, que es la guía de estilo oficial para el código Python.

Convención

Usa snake_case, en donde las palabras está en minúsculas y separadas por guiones bajos

						
							my_variable_name = "John"
						
					

Es legible y es el estándar ampliamente aceptado en Python.

Constantes

Usa UPPER_CASE, en donde las palabras están en mayúsculas y separadas por guiones bajos.

						
							PI = 3.14159
							MAX_RETRIES = 5
						
					

Muchos valores para múltiples variables

Python permite asignar valores a múltiples variables en una sola línea:

						
							>>> x, y, z = "Orange", "Banana", "Cherry"
							>>> print(x)
							Orange
							>>> print(y)
							Banana
							>>> print(z)
							Cherry
						
					

Un valor para múltiples variables

Puedes asignar el mismo valor a múltiples variables en una sola línea:

						
							>>> x = y = z = "Orange"
							>>> print(x)
							Orange
							>>> print(y)
							Orange
							>>> print(z)
							Orange
						
					

Desempaquetar una colección

Si tienes una colección de valores en una lista, tupla, etc., Python te permite extraer los valores en variables. Esto se llama desempaquetar.

						
							>>> fruits = ["apple", "banana", "cherry"]
							>>> x, y, z = fruits
							>>> print(x)
							apple
							>>> print(y)
							banana
							>>> print(z)
							cherry
						
					

Imprimir variables

La función print() de Python se utiliza a menudo para generar variables.

						
							>>> x = "Python is awesome"
							>>> print(x)
							Python is awesome
						
					

En la función print(), se generan múltiples variables, separadas por una coma:

						
							>>> x = "Python"
							>>> y = "is"
							>>> z = "awesome"
							>>> print(x, y, z)
							Python is awesome
						
					

También puedes utilizar el operador + para generar múltiples variables:

						
							>>> x = "Python "
							>>> y = "is "
							>>> z = "awesome"
							>>> print(x + y + z)
							Python is awesome
						
					

Para los números, el carácter + funciona como un operador matemático:

						
							>>> x = 5
							>>> y = 10
							>>> print(x + y)
							15
						
					

En la función print(), cuando intentas combinar una cadena y un número con el operador +, Python te dará un error:

						
							>>> x = 5
							>>> y = "John"
							>>> print(x + y)
							
						
					
						
							Traceback (most recent call last):
							  File "", line 1, in 
							TypeError: unsupported operand type(s) for +: 'int' and 'str'
						
					

La mejor forma de generar múltiples variables en la función print() es separarlas con comas, que incluso admiten diferentes tipos de datos:

						
							>>> x = 5
							>>> y = "John"
							>>> print(x, y)
							5 John
						
					

Variables Globales

Las variables que se crean fuera de una función (como en todos los ejemplos de las páginas anteriores) se conocen como variables globales.

Las variables globales pueden ser utilizadas por cualquier persona, tanto dentro como fuera de las funciones.

Crea una variable fuera de una función y úsala dentro de la función

						
							>>> x = "awesome"
							>>> 
							>>> def myfunc():
							...   print("Python is " + x)
							... 
							>>> myfunc()
							Python is awesome
						
					

Si creas una variable con el mismo nombre dentro de una función, esta será local y solo podrá usarse dentro de la función. La variable global con el mismo nombre permanecerá como estaba, global y con su valor original.

Crea una variable dentro de una función, con el mismo nombre que la variable global

						
							>>> x = "awesome"
							>>> 
							>>> def myfunc():
							...   x = "fantastic"
							...   print("Python is " + x)
							... 
							>>> myfunc()
							Python is fantastic
							>>> 
							>>> print("Python is " + x)
							Python is awesome
						
					

La palabra clave global

Normalmente, al crear una variable dentro de una función, esta es local y solo puede usarse dentro de esa función.

Para crear una variable global dentro de una función, se puede usar la palabra clave global.

Si utilizas la palabra clave global, la variable pertenece al ámbito global:

						
						>>> def myfunc():
						...   global x
						...   x = "fantastic"
						... 
						>>> myfunc()
						>>> 
						>>> print("Python is " + x)
						Python is fantastic
						
					

Además, utilice la palabra clave global si desea cambiar una variable global dentro de una función.

Para cambiar el valor de una variable global dentro de una función, haga referencia a la variable utilizando la palabra clave global:

						
						>>> x = "awesome"
						>>> 
						>>> def myfunc():
						...   global x
						...   x = "fantastic"
						... 
						>>> myfunc()
						>>> 
						>>> print("Python is " + x)
						Python is fantastic
						
					

Tipos de datos en Python

Tipos de datos integrados

  • En programación, el tipo de dato es un concepto importante.
  • Las variables pueden almacenar datos de diferentes tipos, y cada tipo puede realizar funciones distintas.

Python tiene los siguientes tipos de datos integrados por defecto, en estas categorías:

Categoría Nombre
Text Type str
Numeric Types int, float, complex
Sequence Types list, tuple, range
Mapping Type dict
Set Types set, frozenset
Boolean Type bool
Binary Types bytes, bytearray, memoryview
None Type NoneType
Números en Python

Existen tres tipos numéricos en Python:

  • int
  • float
  • complex

Las variables de tipo numérico se crean cuando se les asigna un valor:

						
						>>> x = 1    # int
						>>> y = 2.8  # float
						>>> z = 1j   # complex
						>>> print(type(x))
						
						>>> print(type(y))
						
						>>> print(type(z))
						
						
					
Int

Int, o entero, es un número entero, positivo o negativo, sin decimales, de longitud ilimitada.

						
						>>> x = 1
						>>> y = 35656222554887711
						>>> z = -3255522
						>>> 
						>>> print(type(x))
						
						>>> print(type(y))
						
						>>> print(type(z))
						
						
					
Float

Un número flotante o "número de punto flotante" es un número, positivo o negativo, que contiene uno o más decimales.

						
						>>> x = 1.10
						>>> y = 1.0
						>>> z = -35.59
						>>> 
						>>> print(type(x))
						
						>>> print(type(y))
						
						>>> print(type(z))
						
						
					

Los flotantes también pueden ser números científicos con una "e" para indicar la potencia de 10.

						
						>>> x = 35e3
						>>> y = 12E4
						>>> z = -87.7e100
						>>> 
						>>> print(type(x))
						
						>>> print(type(y))
						
						>>> print(type(z))
						
						
					
Strings (cadenas)

Las cadenas en Python o strings son un tipo inmutable que permite almacenar secuencias de caracteres. Para crear una, es necesario incluir el texto entre comillas dobles "[tu string aquí]".

Puedes obtener más ayuda con el siguiente comando

						
						help(str)
						
					
						
						s = "Esto es una cadena"
						print(s)       #Esto es una cadena
						print(type(s)) #
						
					

También es valido declarar las cadenas con comillas simples simples '.

						
						s = 'Esto es otra cadena'
						print(s)        #Esto es otra cadena
						print(type(s))  #
						
					

Las cadenas no están limitadas en tamaño, por lo que el único límite es la memoria de tu computador. Una cadena puede estar también vacía.

						
						s = ''
						
					

¿Y si quiero introducir una comilla, bien sea simple ' o doble " dentro de una cadena?

Para resolver este problema debemos recurrir a las secuencias de escape. En Python hay varias, pero las analizaremos con más detalle en otro capítulo. Por ahora, la más importante es \", que nos permite incrustar comillas dentro de una cadena.

						
						>>> s = "Esto es una comilla doble \" de ejemplo"
						>>> print(s) 
						Esto es una comilla doble " de ejemplo
						
					

También podemos incluir un salto de línea dentro de una cadena, lo que significa que lo que esté después del salto, se imprimirá en una nueva línea.

						
						>>> s = "Primer linea\nSegunda linea"
						>>> print(s)
						Primer linea
						Segunda linea
						
					
Rebando Strings

Puedes devolver un rango de caracteres utilizando la sintaxis de segmentación.

Especifica el índice inicial y el índice final, separados por dos puntos, para devolver una parte de la cadena.

Obtener los caracteres de la posición 2 a la posición 5 (no incluidos):

						
						>>> b = "Hello, World!"
						>>> print(b[2:5])
						llo
						
					

En Python, las cadenas se indexan comenzando desde 0. Esto significa que el primer carácter de la cadena tiene un índice de 0, el segundo tiene un índice de 1, el tercero tiene un índice de 2, y así sucesivamente.

  1. H → 0
  2. e → 1
  3. l → 2
  4. l → 3
  5. o → 4
  6. , → 5
  7. (espacio) → 6
  8. W → 7
  9. o → 8
  10. r → 9
  11. l → 10
  12. d → 11
  13. ! → 12

Si omitimos el índice de inicio, el rango comenzará en el primer carácter.

						
						>>> b = "Hello, World!"
						>>> print(b[:5])
						Hello
						
					

Si omitimos el índice final, el rango irá hasta el final.

						
						>>> b = "Hello, World!"
						>>> print(b[2:])
						llo, World!
						
					

Utiliza índices negativos para iniciar la porción desde el final de la cadena.

						
							>>> b = "Hello, World!"
							>>> print(b[-5:-2])
							orl
						
					
Modificando Strings

Python tiene un conjunto de métodos integrados que puedes usar en cadenas.

upper()

El método upper() convierte todos los caracteres alfabéticos en mayúsculas.

						
						>>> s = "mi cadena"
						>>> print(s.upper())
						MI CADENA
						
					
lower()

El método lower() convierte todos los caracteres alfabéticos en minúscula.

						
						>>> s = "MI CADENA"
						>>> print(s.lower())
						mi cadena
						
					
strip()

El método strip() elimina a la izquierda y derecha el carácter que se le introduce. Si se llama sin parámetros elimina los espacios. Muy útil para limpiar cadenas.

						
						>>> s = "  abc  "
						>>> print(s.strip())
						abc
						
					
replace()

El método replace() reemplaza una cadena con otra cadena.

						
						>>> a = "Hello, World!"
						>>> print(a.replace("H", "J"))
						Jello, World!
						
					
split()

El método split() divide una cadena en subcadenas y las devuelve almacenadas en una lista. La división es realizada de acuerdo a el primer parámetro, y el segundo parámetro indica el número máximo de divisiones a realizar.

						
						>>> s = "Python,Java,C"
						>>> print(s.split(","))
						['Python', 'Java', 'C']
						
					
Concatenación Strings

Para concatenar o combinar dos cadenas puedes utilizar el operador +.

						
						>>> a = "Hello"
						>>> b = "World"
						>>> c = a + b
						>>> print(c)
						HelloWorld
						
					

Para agregar un espacio entre ellos, agregue un " ":

						
						>>> a = "Hello"
						>>> b = "World"
						>>> c = a + " " + b
						>>> print(c)
						Hello World
						
					
Formateando Strings

Tal vez queramos declarar una cadena que contenga variables en su interior, como números o incluso otras cadenas. Una forma de hacerlo sería concatenando la cadena que queremos con otra usando el operador +. Nótese que str() convierte en string lo que se pasa como parámetro.

						
						>>> x = 5
						>>> s = "El número es: " + str(x)
						>>> print(s)
						El número es: 5
						
					

Otra forma es usando %. Por un lado tenemos %s que indica el tipo que se quiere imprimir, y por otro a la derecha del % tenemos la variable a imprimir. Para imprimir una cadena se usaría %s o %f para un valor en coma flotante.

						
						>>> x = 5
						>>> s = "El número es: %d" % x
						>>> print(s)
						El número es: 5
						
					

Una forma un poco más moderna de realizar lo mismo, es haciendo uso de format().

						
						>>> s = "Los números son {} y {}".format(5, 10)
						>>> print(s)
						Los números son 5 y 10
						
					

Por si no fueran pocas ya, existe una tercera forma de hacerlo introducida en la versión 3.6 de Python. Reciben el nombre de cadenas literales o f-strings. Esta nueva característica, permite incrustar expresiones dentro de cadenas.

						
						>>> a = 5; b = 10
						>>> s = f"Los números son {a} y {b}"
						>>> print(s)
						Los números son 5 y 10
						
					
Otros métodos string

Algunos de los métodos de la clase string son:

capitalize()

El método capitalize() se aplica sobre una cadena y la devuelve con su primera letra en mayúscula.

						
						>>> s = "mi cadena"
						>>> print(s.capitalize())
						Mi cadena
						
					
swapcase()

El método swapcase() convierte los caracteres alfabéticos con mayúsculas en minúsculas y viceversa.

						
						>>> s = "mI cAdEnA"
						>>> print(s.swapcase())
						Mi CaDeNa
						
					
join()

El método join() devuelve la primera cadena unida a cada uno de los elementos de la lista que se le pasa como parámetro.

						
						>>> s = " y ".join(["1", "2", "3"])
						>>> print(s) 
						1 y 2 y 3
						
					
Casting

Hacer un cast o casting significa convertir un tipo de dato a otro. Anteriormente hemos visto tipos como los int, string o float. Pues bien, es posible convertir de un tipo a otro.

Pero antes de nada, veamos los diferentes tipos de cast o conversión de tipos que se pueden hacer. Existen dos:

  • Conversión implícita: Es realizada automáticamente por Python. Sucede cuando realizamos ciertas operaciones con dos tipos distintos.
  • Conversión explícita: Es realizada expresamente por nosotros, como por ejemplo convertir de str a int con str().
Conversión implícita

Esta conversión de tipos es realizada automáticamente por Python, prácticamente sin que nos demos cuenta. Aún así, es importante saber lo que pasa por debajo para evitar problemas futuros.

El ejemplo más sencillo donde podemos ver este comportamiento es el siguiente:

						
						>>> a = 1   # 
						>>> b = 2.3 # 
						>>> 
						>>> a = a + b
						>>> print(a)       # 3.3
						3.3
						>>> print(type(a)) # 
						
						
					

Pero si sumamos a y b y almacenamos el resultado en a, podemos ver como internamente Python ha convertido el int en float para poder realizar la operación, y la variable resultante es float

Sin embargo hay otros casos donde Python no es tan listo y no es capaz de realizar la conversión. Si intentamos sumar un int a un string, tendremos un error TypeError.

						
						>>> a = 1
						>>> b = "2.3"
						>>> 
						>>> c = a + b
						Traceback (most recent call last):
						  File "", line 1, in 
						TypeError: unsupported operand type(s) for +: 'int' and 'str'
						
					

Si te das cuenta, es lógico que esto sea así, ya que en este caso b era "2.3", pero ¿y si fuera "Hola"? ¿Cómo se podría sumar eso? No tiene sentido.

Conversión explicita

Por otro lado, podemos hacer conversiones entre tipos o cast de manera explícita haciendo uso de diferentes funciones que nos proporciona Python.

Convertir float a int

Para convertir de float a int debemos usar float(). Pero mucho cuidado, ya que el tipo entero no puede almacena decimales, por lo que perderemos lo que haya después de la coma.

						
						>>> a = 3.5
						>>> a = int(a)
						>>> print(a)
						3
						
					
Convertir float a string

Podemos convertir un float a string con str(). Podemos ver en el siguiente código como cambia el tipo de a después de hacer el cast.

						
						>>> a = 3.5
						>>> print(type(a)) # 
						
						>>> a = str(a)
						>>> print(type(a)) # 
						
						
					
Booleans

Los valores booleanos representan uno de dos valores: True o False.

Cuando comparas dos valores, se evalúa la expresión y Python devuelve la respuesta booleana:

						
						>>> print(10 > 9)
						True
						>>> print(10 == 9)
						False
						>>> print(10 < 9)
						False
						
					

La bool()función te permite evaluar cualquier valor, y darte Trueo False a cambio.

						
						>>> print(bool("Hello"))
						True
						>>> print(bool(15))
						True
						
					

La mayoría de los valores son verdaderos

  • Casi cualquier valor se evalúa Truesi tiene algún tipo de contenido.
  • Cualquier cadena es True, excepto las cadenas vacías.
  • Cualquier número es True, excepto 0.

Lo siguiente devolverá Verdadero:

						
						>>> bool("abc")
						True
						>>> bool(123)
						True
						>>> bool(["apple", "cherry", "banana"])
						True
						
					

De hecho, no hay muchos valores que evalúen como False, excepto valores vacíos, como (), [], {}, "", el número 0y el valor None. Y, por supuesto, el valor Falsese evalúa como False.

Lo siguiente devolverá Falso:

						
						>>> bool(False)
						False
						>>> bool(None)
						False
						>>> bool(0)
						False
						>>> bool("")
						False
						
					
Python Datetime

Una fecha en Python no es un tipo de dato en sí misma, pero podemos importar un módulo llamado datetimepara trabajar con fechas como objetos de fecha.

Fechas

Importa el módulo datetime y muestra la fecha actual:

						
						>>> import datetime
						>>> 
						>>> x = datetime.datetime.now()
						>>> print(x)
						2025-03-27 19:15:02.235393
						
						

La fecha contiene año, mes, día, hora, minuto, segundo y microsegundo.

Date Output

A continuación se muestran algunos ejemplos; aprenderá más sobre ellos más adelante en este capítulo:

						
						>>> import datetime
						>>> 
						>>> x = datetime.datetime.now()
						>>> 
						>>> print(x.year)
						2025
						>>> print(x.strftime("%A"))
						Thursday
						
					

strftime() and strptime() Behavior

Creación de objetos de fecha

Para crear una fecha, podemos utilizar la clase (constructora) datetime() del módulo datetime.

						
						>>> import datetime
						>>> 
						>>> x = datetime.datetime(2020, 5, 17)
						>>> 
						>>> print(x)
						2020-05-17 00:00:00
						
					

La clase datetime() también toma parámetros para la hora y la zona horaria (hora, minuto, segundo, microsegundo, zona horaria), pero son opcionales y tienen un valor predeterminado de 0, (None para la zona horaria).

Operadores

Los operadores se utilizan para realizar operaciones sobre variables y valores. En el siguiente ejemplo, utilizamos el operador + para sumar dos valores:

Python divide los operadores en los siguientes grupos:

  • Operadores aritméticos
  • Operadores de asignación
  • Operadores lógicos
  • Operadores de identidad
  • Operadores de membresía
  • Operadores Bitwise
Operadores aritméticos
Operador Nombre Ejemplo
+ Adición x + y
- Sustracción x - y
* Multiplicación x * y
/ División x / y
% Módulo x % y
** Exponenciación x ** y
// División entera x // y
Operadores de asignación
Operador Ejemplo Es igual a
= x = 5 x = 5
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3
//= x //= 3 x = x // 3
**= x **= 3 x = x ** 3
&= x &= 3 x = x & 3
|= x |= 3 x = x | 3
^= x ^= 3 x = x ^ 3
>>= x >>= 3 x = x >> 3
<<= x <<= 3 x = x << 3
:= print(x := 3) x = 3
print(x)
Operadores de comparación
Operador Nombre Ejemplo
== Igual x == y
!= Distinto x != y
> Mayor que x > y
< Menor que x < y
>= Mayor o igual x >= y
<= Menor o igual x <= y
Operadores lógicos
Operador Descripción Ejemplo
and  Devuelve Verdadero si ambas afirmaciones son verdaderas x < 5 and  x < 10
or Devuelve Verdadero si una de las afirmaciones es verdadera x < 5 or x < 4
not Invierte el resultado, devuelve Falso si el resultado es verdadero not(x < 5 and x < 10)
Operadores de membresía
Operator Description Example
in  Returns True if a sequence with the specified value is present in the object x in y
not in Returns True if a sequence with the specified value is not present in the object x not in y
Precedencia del operador
Operador Descripción
() Paréntesis
** Exponenciación
+x  -x  ~x Unario más, unario menos y bit a bit NO
*  /  //  % Multiplicación, división, división entera, y módulo
+  - Adición y sustracción
==  !=  >  >=  <  <=  is  is not  in  not in  Comparaciones, identidad, y operadores de membresía
not NO Lógico
and Y
or Ó