¿Qué es Python?

Lesson 1/15 | Tiempo de estudio: Min
¿Qué es Python?

Bootcamp Full Stack Python (FastApi) y React



Introducción a Python

A diferencia de lo que mucha gente puede pensar, Python es un lenguaje que data de los años 1990s, y su creación se le atribuye al neerlandés Guido van Rossum[1]. Recibió su nombre por los humoristas Monty Python.

Su última versión es Python 3, y es la que te recomendamos usar ya que las anteriores ya tienen soporte oficial.

De acuerdo con StackOverflow insights[2] en la siguiente gráfica podemos ver el número de preguntas vistas en la plataforma acerca de Pyhton. Podemos ver que Python lleva casi dos años en el podio, una auténtica burrada.

De hecho un estudio realizado hace un tiempo en el 2017[3] ya ponía a Python como uno de los favoritos en los países con mayores ingresos como Alemania, Reino Unido o Estados Unidos entre otros.

"Python was the most visited tag on Stack Overflow within high-income nations"

"Python fue la etiqueta más visitada en Stack Overflow en los Países con ingresos más altos"

Podemos ver por lo tanto que existe una tendencia clara y seguramente el interés en Python vaya a seguir creciendo en los próximos años. Estos son los motivos por lo que ha crecido tanto y lo seguirá haciendo:

  • Se trata de un lenguaje fácil de aprender, con una sintaxis muy sencilla que se asemeja bastante al pseudocódigo. En otras palabras, poco código hace mucho.
  • Su uso no está ligado a un sector concreto. Por ejemplo el lenguaje R es útil para análisis de datos, pero no puede ser usado para desarrollo web. Python vale para todo.
  • Tiene una comunidad enorme, además de gran cantidad de librerías para hacer prácticamente cualquier cosa, literalmente.
  • Es un lenguaje multiplataforma, por lo que el mismo código es compatible en cualquier plataforma (Windows, macOS, Linux) sin hacer nada.
  • Por lo general se puede hacer desarrollos en Python más rápidamente que en otros lenguajes, acortando la duración de los proyectos.

Usos de Python

Como hemos dicho Python es un lenguaje muy transversal, usado en diferentes industrias y para diferentes fines. Veamos algunos de las empresas que usan Python:

  • YouTube usa Python en la parte del servidor, unida a otros lenguajes como Java o Go.

    [4]

  • Netflix usa Python par automatizar tareas, explorar datos y labores de aprendizaje automático entre otras.

    [5]

  • La NASA usa Python en gran cantidad de programas científicos.

    [6]

  • JPMorgan ya dijo hace varios años que se esperaba de sus analistas financieros supieran Python.

    [7]

Python es también usado para fines muy diversos como son los siguientes:

  • Desarrollo Web: Existen frameworks como DjangoPyramidFlask o Bottle que permiten desarrollar páginas web a todos los niveles.
  • Ciencia y Educación: Debido a su sintaxis tan sencilla, es una herramienta perfecta para enseñar conceptos de programación a todos los niveles. En lo relativo a ciencia y cálculo numérico, existen gran cantidad de librerías como SciPy o Pandas.
  • Desarrollo de Interfaces Gráficos: Gran cantidad de los programas que utilizamos tienen un interfaz gráfico que facilita su uso. Python también puede ser usado para desarrollar GUIs con librerías como Kivy o pyqt.
  • Desarrollo Software: También es usado como soporte para desarrolladores, como para testing.
  • Machine Learning: En los último años ha crecido el número de implementaciones en Python de librerías de aprendizaje automático como KerasTensorFlowPyTorch o sklearn.
  • Visualización de Datos: Existen varias librerías muy usadas para mostrar datos en gráficas, como matplotlibseaborn o plotly.
  • Finanzas y Trading: Gracias a librerías como QuantLib o qtpylib y a su facilidad de uso, es cada vez más usado en estos sectores.

De hecho a día de hoy prácticamente cualquier API, librería o servicio que existe en el mundo tiene una versión para Python, bien sea de manera nativa o a través de un wrapper.

Comunidad

La comunidad de Python es inmensa, con alrededor de 8.2 millones de personas en el mundo (a fecha de 2019)[8], una cifra que supera ya a los usuarios de Java.

Es importante el tamaño de la comunidad, porque cuanto más grande sea, mayor soporte se le dará al lenguaje y mayor número de personas compartirán sus problemas y se ayudarán a resolverlos.

Otra de las características de la comunidad Python son las famosas PyCon, unas convenciones anuales llevadas a cabo en gran número de países, donde los desarrolladores se reúnen para compartir ideas.

Es también importante mencionar la Python Software Foundation, una organización sin ánimo de lucro que se dedica a promoverproteger y desarrollar el lenguaje Python.

Características de Python

Como cualquier otro lenguaje, Python tiene una serie de características que lo hacen diferente al resto. Las explicamos a continuación:

  • Es un lenguaje interpretado, no compilado.
  • Usa tipado dinámico, lo que significa que una variable puede tomar valores de distinto tipo.
  • Es fuertemente tipado, lo que significa que el tipo no cambia de manera repentina. Para que se produzca un cambio de tipo tiene que hacer una conversión explícita.
  • Es multiplataforma, ya que un código escrito en macOS funciona en Windows o Linux y vice versa.

Tal vez algunos de estos conceptos puedan resultarte extraños si estás empezando en el mundo de la programación. El siguiente código pretende ilustrar algunas de las características de Python.

Algunas cosas curiosidad que en otros lenguajes no pasan. La función acepta un parámetro entrada pero no se especifica su tipo. La x almacena primero una cadena, luego un float y luego un integer. La función funcion() es llamada con un int, pero su valor se divide entre 2 y el resultado es convertido automáticamente en un float.

def funcion(entrada):
return entrada/2

x = "Hola"
x = 7.0
x = int(x)
x = funcion(x)
print(x)
print(type(x))

# 3.5
# <class 'float'>

The Zen of Python

El Zen de Python es una colección de los 19 principios que influyen en el diseño del lenguaje. De alguna manera, muestran la filosofía del mismo y pueden ser encontrados en la PEP20[9] Las PEP o Python Enhancement Prososals son unos documentos que ofrecen información a la comunidad de Python, bien describiendo alguna característica nueva o dando información en general.

Son las siguientes, y aunque alguna pueda parecer lógica, a veces resultan no serlo tanto cuando no se cumplen:

Bello es mejor que feo. Explícito es mejor que implícito. Simple es mejor que complejo. Complejo es mejor que complicado. Plano es mejor que anidado. Espaciado es mejor que denso. La legibilidad es importante. Los casos especiales no son lo suficientemente especiales como para romper las reglas. Sin embargo la practicidad gana a la pureza. Los errores nunca deben pasar silenciosamente. A menos que se silencien explícitamente. Frente a la ambigüedad, evitar la tentación de adivinar. Debería haber una, y preferiblemente solo una, manera obvia de hacerlo. A pesar de que esa manera no sea obvia a menos que seas Holandés (el creador lo era)Ahora es mejor que nunca. A pesar de que nunca es muchas veces mejor que ahora mismo. Si la implementación es difícil de explicar, es una mala idea. Si la implementación es fácil de explicar, puede que sea una buena idea. Los namespaces son una gran idea, ¡tengamos más de esos!

¿Qué opinas? ¿Te hemos convencido para aprender Python? A continuación te explicaremos cómo instalar Python para que puedas empezar a dar tus primeros pasos.


¿Cómo programar en Python?

Si quieres empezar a programar en Python, en este post te damos dos alternativas de como puedes empezar a hacerlo:

  • La primera es usar Python sin ningún tipo de instalación. Sin duda la más sencilla y rápida. Para ello usaremos la versión online de JupyterLab.
  • Y la segunda es usando Python con PyCharm, para lo que tendremos que instalar el propio lenguaje Python y el entorno de desarrollo PyCharm.

¡Empecemos!

Sin instalación: JupyterLab

Si quieres empezar a programar en Python de manera rápida sin tener que instalar nada, existe una alternativa muy útil llamada JupyterLab. Se trata de una herramienta desarrollada por Jupyter, un proyecto open-source sin ánimo de lucro que nació en 2014 del proyecto IPython.

JupyterLab es un entorno de desarrollo web (se accede a el a través de Firefox, Chrome u otro navegador) y además de poder instalártelo en tu ordenador, ofrecen un servicio online gratis de usar. Con tan sólo entrar en una dirección web puedes empezar a programar.

Accede a https://jupyter.org/try y busca “Try JupyterLab”.

Una vez haya cargado la página encontrarás lo siguiente. Se trata del entorno de desarrollo que se nos proporciona. A la izquierda tienes la navegación, donde están todos tus achivos y carpetas. A la derecha se pueden visualizar los ficheros ipynb, que es el formato de los Jupyter Notebook por excelencia.

En estos ficheros ipynb puedes escribir código Python y ejecutarlo, además de poder mezclarlo con texto, imágenes, animaciones y otras herramientas.

Si creamos un nuevo Notebook con File->New->Notebook y seleccionamos como Kernel Python3, podemos empezar a crear nuestro primer código, el famoso “Hola Mundo”. Haciendo click en la flecha, se puede ejecutar el código que tenemos seleccionado.

Los Notebook son una herramienta muy potente ya que:

  • Permiten ejecutar código fragmento a fragmento, viendo el resultado justo en la siguiente línea.
  • Se puede mezclar código con otros recursos como imágenes o texto con formato markdown, entre otros recursos.
  • Es posible visualizar también gráficas, como las generadas con matplotlib.

Pero también tiene sus desventajas:

  • No se trata de un entorno de desarrollo completo, ya que carece de muchas funcionalidades.
  • Si usamos la versión web, estaremos limitados por los recursos del servidor en el que se ejecute. La rapidez será mayor en nuestro ordenador.
  • Para proyectos grandes de Python no es una alternativa.

Por lo tanto es una herramienta perfecta para empezar, pero si crees que necesitas más, te explicamos como instalar Python y el entorno de desarrollo PyCharm en la siguientes secciones.

Con instalación: Python + PyCharm

Si por lo contrario buscas algo más completo, deberás instalar Python y un entorno de desarrollo (IDE) en tu ordenador. Necesitarás dos cosas:

  • Por un lado necesitarás Python, es decir, el propio lenguaje de programación. Con esto y cualquier editor de texto ya podrías programar, pero no es demasiado agradable.
  • Por otro, es conveniente también instalar un entorno de desarrollo, ya que hace que programar sea una tarea mucho más fácil. Existe muchos, como AtomSublime Text o Visual Studio Code, pero nosotros usaremos PyCharm.

Instalar Python en Windows

Para instalar Python en Windows debes ir a la sección de descargas de la web oficial y seleccionar la última versión. Te recomendamos utilizar la versión 3.x ya que aunque también existen versiones anteriores como las 2.x, Python ya ha dejado de dar soporte a ellas.

Ambas versiones son relativamente similares, pero hay detalles o alguna que otra funcionalidad que varía. En este blog nos centramos en la versión 3, por lo que todo el código que veas será compatible con la misma.

Una vez hayas descargado el ejecutable, ábrelo y realiza la instalación. Es importante que verifiques que se haya seleccionado la opción de “Add Python 3.x to PATH

Una vez hayas finalizado, si abres el terminal de comandos de Windows (busca por la aplicación cmd o símbolo de sistema) puedes verificar que se ha instalado correctamente ejecutando el siguiente comando.

python -V

Y verás en la salida algo así dependiendo de la versión que hayas instalado.

Python 3.8.3

De hecho como hemos indicado, con esto ya podrías empezar a programar en Python en tu ordenador, pero la verdad que no es demasiado cómodo. En el último apartado te explicaremos como instalar PyCharm, un entorno de desarrollo que nos hará la vida mucho más fácil.

Instalar Python en macOS

MÉTODO 1

Existen dos formas diferentes de instalar Python en mac. Empezamos por la más sencilla. Accede a la sección de descargas de la web oficial de Python y descarga la última versión. Te recomendamos usar la versión 3, que es la que usamos en todo este blog y la más reciente.

Una vez lo hayas instalado y hayas terminado el proceso de instalación, puedes abrir el terminal y verificar que efectivamente se ha instalado con el siguiente comando.

python -V

Y si el comando devuelve algo así como Python 3.6.8, ya estaría instalado. Si tecleas python en el terminal ya podrías empezar a teclear comandos Python, pero no es muy cómodo. Más adelante te explicaremos como usar Python con PyCharm.

MÉTODO 2

La segunda forma de instalar Python en mac es a través del gestor de paquetes homebrew. Primero necesitarás instalar XCode con el siguiente comando.

xcode-select --install

Una vez instalado XCode deberás instalar Homebrew con el siguiente comando.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

Una vez instalado Homebrew ya podemos instalar Python a través de su gestor de paquetes. Simplemente ejecuta.

brew install python3

Y por último verifica que Python se ha instalado correctamente.

python3 -V

Instalar Python en Linux

En la mayoría de distribuciones Linux se puede instalar de manera bastante fácil. Para el caso de Ubuntu 16.10 o más reciente, ejecuta el siguiente comando en el terminal. Dependiendo de la fecha, tal vez te interese instalar una versión más reciente como la 3.8 u otra.

apt-get update
apt-get install python3.8

Si utilizas otra versión diferente de Ubuntu, deberás añadir un repositorio. Te recomendamos deadsnakes PPA.

sudo apt-get install software-properties-common
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.8

Y una vez finalizada la instalación puedes comprobar que se ha instalado correctamente con el siguiente comando.

python -V
python3 -V

Instalando PyCharm

Llegados a este punto debemos ya tener instalado Python en nuestro ordenador, por lo que vamos a proceder ya a instalar PyCharm.

Antes de nada, una breve introducción a PyCharm. Se trata de un entorno de desarrollo o IDE (Integrated Development Environment) de la empresa JetBrains. Está disponible en las plataformas más comunes como Windows, Linux o macOS y es una herramienta perfecta para escribir código en Python.

Para instalar PyCharm, accede a la sección de descargas y selecciona la versión Community, que es la versión gratis de desarrollo. Una vez el proceso de instalación haya acabado, deberías ver algo así al abrirlo.

A continuación explicaremos como crear y configurar un proyecto, para que puedas empezar a programar en Python dentro del IDE PyCharm.

Configurando PyCharm

Una vez hayas abierto PyCharm, realiza los siguientes pasos:

  • Crear un proyecto nuevo.
  • Asigna un nombre y di donde lo quieres guardar.
  • Te recomendamos usar Virtualenv para los entornos virtuales.
  • En Base Interpreter selecciona la versión de Python que has descargado.
  • El proyecto se habrá creado. Crea un nuevo fichero Python con un nombre.
  • Ya puedes escribir código en el fichero. Empecemos por ejemplo con un Hola Mundo
  • Y en Run->Run o click derecho y Run, podrás ejecutar el código.

Una de las características más útiles en PyCharm es que se pueden instalar paquetes de manera muy sencilla a través de su interfaz gráfico. Pongamos que por ejemplo quisieras instalar la librería numpy. Ve a PreferenciasProyecto y en Proyect Interpreter podrás añadir librerías con haciendo click en el+.


Primeros pasos en Python

A continuación te ayudamos a dar tus primeros pasos en Python. ¡Allá vamos!

Hola mundo en Python

En cualquier introducción a un nuevo lenguaje de programación, no puede faltar el famoso Hola Mundo. Se trata del primer programa por el que se empieza, que consiste en programar una aplicación que muestra por pantalla ese texto. Si ejecutas el siguiente código, habrás cumplido el primer hito de la programación en Python.

print("Hola Mundo")

Por lo tanto ya te puedes imaginar que la función print() sirve para imprimir valores por pantalla. Imprimirá todo lo que haya dentro de los paréntesis. Fácil ¿verdad? A diferencia de otros lenguajes de programación, en Python se puede hacer en 1 línea.

Definiendo variables en Python

Vamos a complicar un poco más las cosas. Creemos una variable que almacene un número. A diferencia de otros lenguajes de programación, no es necesario decirle a Python el tipo de dato que queremos almacenar en x. En otro lenguajes es necesario especificar que x almacenará un valor entero, pero no es el caso. Python es muy listo y al ver el número 5, sabrá de que tipo tiene que ser la x.

x = 5

Ahora podemos juntar el print() que hemos visto con la x que hemos definido, para en vez de imprimir el Hola Mundo, imprimir el valor de la x.

print(x)
# Salida: 5

En el anterior fragmento habrás visto el uso #. Se trata de la forma que tiene Python de crear los denominados comentarios. Un comentario es un texto que acompaña al código, pero que no es código propiamente dicho. Se usa para realizar anotaciones sobre el código, que puedan resultar útiles a otras personas. En nuestro caso, simplemente lo hemos usado para decirte que la salida de ese comando será 5, ya que x valía 5.

Sumando variables en Python

Vamos a sumar dos variables e imprimir su valor. Lo primero vamos a declararlas, con nombres a y b. Declarar una variable significa “crearla”.

# Declaramos las variables a, b
# y asignamos dos valores
a = 3
b = 7

Ahora Python ya conoce a y b y sus respectivos valores. Podemos hacer uso de + para sumarlos, y una vez más de print() para mostrar su valor por pantalla.

print(a+b)

Es importante que sólo usemos variables que hayan sido definidas, porque de lo contrario tendremos un error. Si hacemos:

print(z)
# Error! La variable no existe

Tendremos un error porque Python no sabe que es z, ya que no ha sido declarada con anterioridad.

Ejemplo condicional

Podemos empezar a complicar un poco más las cosas con el uso de una sentencia condicional. Te lo explicamos más adelante en este post sobre el if.

El siguiente código hace uso del if para comprobar si la a es igual == a 10. Si lo es, se imprimirá “Es 10” y si no lo es “No es 10”. Es importante el uso de ==, que es el operador relacional que veremos en otros posts.

a = 10
if a == 10:
print("Es 10")
else:
print("No es 10")

Decimales y cadenas

De la misma forma que hemos visto que una variable puede almacenar un valor entero como 10, es posible también almacenar otros tipos como decimales o incluso cadenas de texto.

Si queremos almacenar un valor decimal, basta con indicarlo usando la separación con .

valor_decimal = 10.3234

Y si queremos almacenar una cadena, es necesario indicar su contenido entre comillas simples 'o dobles ".

mi_cadena = "Hola Mundo"



Sintaxis Python

A continuación veremos la sintaxis de Python, viendo como podemos empezar a usar el lenguaje creando nuestras primeras variables y estructuras de control.

El termino sintaxis hace referencia al conjunto de reglas que definen como se tiene que escribir el código en un determinado lenguaje de programación. Es decir, hace referencia a la forma en la que debemos escribir las instrucciones para que el ordenador, o más bien lenguaje de programación, nos entienda.

En la mayoría de lenguajes existe una sintaxis común, como por ejemplo el uso de = para asignar un dato a una variable, o el uso de {} para designar bloques de código, pero Python tiene ciertas particularidades.

La sintaxis es a la programación lo que la gramática es a los idiomas. De la misma forma que la frase “Yo estamos aquí” no es correcta, el siguiente código en Python no sería correcto, ya que no respeta las normas del lenguaje.

if ($variable){
x=9;
}

Lo veremos a continuación en detalle, pero Python no soporta el uso de $ ni hace falta terminar las líneas con ; como en otros lenguajes, y tampoco hay que usar {} en estructuras de control como en el if.

Por otro lado, de la misma forma que un idioma no se habla son simplemente saber todas sus palabras, en la programación no basta con saber la sintaxis de un lenguaje para programar correctamente en el. Es cierto que sabiendo la sintaxis podremos empezar a programar y a hacer lo que queramos, pero el uso de un lenguaje de programación va mucho más allá de la sintaxis.

Para empezar a perderle el miedo a la sintaxis de Python, vamos a ver un ejemplo donde vemos cadenasoperadores aritméticos y el uso del condicional if.

El siguiente código simplemente define tres valores ab y c, realiza unas operaciones con ellos y muestra el resultado por pantalla.

# Definimos una variable x con una cadena
x = "El valor de (a+b)*c es"

# Podemos realizar múltiples asignaciones
a, b, c = 4, 3, 2

# Realizamos unas operaciones con a,b,c
d = (a + b) * c

# Definimos una variable booleana
imprimir = True

# Si imprimir, print()
if imprimir:
print(x, d)

# Salida: El valor de (a+b)*c es 14

Como puedes observar, la sintaxis de Python es muy parecida al lenguaje natural o pseudocódigo, lo que hace que sea relativamente fácil de leer. Otra ventaja es que no necesitamos nada más, el código anterior puede ser ejecutado tal cual está. Si conoces otros lenguajes como C o Java, esto te resultará cómodo, ya que no es necesario crear la típica función main().

Comentarios

Los comentarios son bloques de texto usados para comentar el código. Es decir, para ofrecer a otros programadores o a nuestro yo futuro información relevante acerca del código que está escrito. A efectos prácticos, para Python es como si no existieran, ya que no son código propiamente dicho, solo anotaciones.

Los comentarios se inician con # y todo lo que vaya después en la misma línea será considerado un comentario.

# Esto es un comentario

Al igual que en otros lenguajes de programación, podemos también comentar varias líneas de código. Para ello es necesario hacer uso de triples comillas bien sean simples ''' o dobles """. Es necesario usarlas para abrir el bloque del comentario y para cerrarlo.

'''
Esto es un comentario
de varias líneas
de código
'''

Identación y bloques de código

En Python los bloques de código se representan con identación, y aunque hay un poco de debate con respecto a usar tabulador o espacios, la norma general es usar cuatro espacios.

En el siguiente código tenemos un condicional if. Justo después tenemos un print() identado con cuatro espacios. Por lo tanto, todo lo que tenga esa identación pertenecerá al bloque del if.

if True:
print("True")

Esto es muy importante ya que el código anterior y el siguiente no son lo mismo. De hecho el siguiente código daría un error ya que el if no contiene ningún bloque de código, y eso es algo que no se puede hacer en Python.

if True:
print("True")

Por otro lado, a diferencia de en otros lenguajes de programación, no es necesario utilizar ; para terminar cada línea.

# Otros lenguajes como C
# requieren de ; al final de cada línea
x = 10;

Sin embargo en Python no es necesario, basta con un salto de línea.

x = 5
y = 10

Pero se puede usar el punto y coma ; para tener dos sentencias en la misma línea.

x = 5; y = 10

Múltiples líneas

En algunas situaciones se puede dar el caso de que queramos tener una sola instrucción en varias línea de código. Uno de los motivos principales podría ser que fuera demasiado larga, y de hecho en la especificación PEP8 se recomienda que las líneas no excedan los 79 caracteres.

Haciendo uso de \ se puede romper el código en varias líneas, lo que en determinados casos hace que el código sea mucho más legible.

x = 1 + 2 + 3 + 4 +\
5 + 6 + 7 + 8

Si por lo contrario estamos dentro de un bloque rodeado con paréntesis (), bastaría con saltar a la siguiente línea.

x = (1 + 2 + 3 + 4 +
5 + 6 + 7 + 8)

Se puede hacer lo mismo para llamadas a funciones

def funcion(a, b, c):
return a+b+c

d = funcion(10,
23,
3)

Creando variables

Anteriormente ya hemos visto como crear una variable y asignarle un valor con el uso de =. Existen también otras formas de hacerlo de una manera un poco más sofisticada.

Podemos por ejemplo asignar el mismo valor a diferentes variables con el siguiente código.

x = y = z = 10

O también podemos asignar varios valores separados por coma.

x, y = 4, 2
x, y, z = 1, 2, 3

Nombrando variables

Puedes nombrar a tus variables como quieras, pero es importante saber que las mayúsculas y minúsculas son importantes. Las variables x y X son distintas.

Por otro lado existen ciertas normas a la hora de nombrar variables:

  • El nombre no puede empezar por un número
  • No se permite el uso de guiones 
  • Tampoco se permite el uso de espacios.

Se muestran unos ejemplos de nombres de variables válidos y no válidos.

# Válido
_variable = 10
vari_able = 20
variable10 = 30
variable = 60
variaBle = 10

# No válido
2variable = 10
var-iable = 10
var iable = 10

Una última condición para nombrar a una variable en Python, es no usar nombres reservados para Python. Las palabras reservadas son utilizadas por Python internamente, por lo que no podemos usarlas para nuestras variables o funciones.

import keyword
print(keyword.kwlist)

# ['False', 'None', 'True', 'and', 'as', 'assert',
# 'async', 'await', 'break', 'class', 'continue',
# 'def', 'del', 'elif', 'else', 'except', 'finally',
# 'for', 'from', 'global', 'if', 'import', 'in', 'is',
# 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
# 'return', 'try', 'while', 'with', 'yield']

De hecho con el siguiente comando puedes ver todas las palabras clave que no puedes usar.

import keyword
print(keyword.kwlist)

Uso de paréntesis

Python soporta todos los operadores matemáticos más comunes, conocidos como operadores aritméticos. Por lo tanto podemos realizar sumas, restas, multiplicaciones, exponentes (usando **) y otros que no vamos a explicar por ahora. En el siguiente ejemplo realizamos varias operaciones en la misma línea, y almacenamos su resultado en y.

x = 10
y = x*3-3**10-2+3

Pero el comportamiento del código anterior y el siguiente es distinto, ya que el uso de paréntesis () da prioridad a unas operaciones sobre otras.

x = 10
y = (x*3-3)**(10-2)+3

El uso de paréntesis no solo se aplica a los operadores aritméticos, sino que también pueden ser aplicados a otros operadores como los relacionales o de membresía que vemos en otros posts.

Variables y alcance

Un concepto muy importante cuando definimos una variable, es saber el alcance o scope que tiene. En el siguiente ejemplo la variable con valor 10 tiene un alcance global y la que tiene el valor 5 dentro de la función, tiene un alcance local. Esto significa que cuando hacemos print(x), estamos accediendo a la variable global x y no a la x definida dentro de la función.

x = 10

def funcion():
x = 5

funcion()
print(x)

No te preocupes si no lo has entendido. Es un concepto un poco complicado de pillar al principio, pero lo veremos más adelante. Te recomendamos leer los siguientes posts para entender mejor las funciones y el alcance de las variables:

Uso de la función print()

Por último, en cualquier lenguaje de programación es importante saber lo que va pasando a medida que se ejecutan las diferentes instrucciones. Por ello, es interesante hacer uso de print() en diferentes secciones del código, ya que nos permiten ver el valor de las variables y diferente información útil.

Existen muchas formas de usar la función print() y te las explicamos en detalle en este post, pero por ahora basta con que sepas lo básico.

Como ya hemos visto se puede usar print() para imprimir por pantalla el texto que queramos.

print("Esto es el contenido a imprimir")

También es posible imprimir el contenido de una variable.

x = 10
print(x)

Y separando por comas , los valores, es posible imprimir el texto y el contenido de variables.

x = 10
y = 20
print("Los valores x, y son:", x, y)
# Salida: Los valores x, y son: 10 20



Nombrando variables

Crear variables

Las variables en Python se pueden crear asignando un valor a un nombre sin necesidad de declararla antes.

x = 10
y = "Nombre"
z = 3.9

Nombres de variables

Podemos asignar el nombre que queramos, respetando no usar las palabras reservadas de Python ni espacios, guiones o números al principio.

# Válido
_variable = 10
vari_able = 20
variable10 = 30
variable = 60
variaBle = 10

Los siguientes ejemplos no son permitidos.

# No válido
2variable = 10
var-iable = 10
var iable = 10

Asignar múltiples valores

Se pueden asignar múltiples variables en la misma línea.

x, y, z = 10, 20, 30

Imprimir variables

Una variable puede ser impresa por pantalla usando print()

x = 10
y = "Nombre"

print(x)
print(y)



Palabras reservadas en Python

Python tiene un conjunto de palabras reservadas que no podemos utilizar para nombrar variables ni funciones, ya que las reserva internamente para su funcionamiento.

Por ejemplo, no podemos llamar a una función True, y si intentamos hacerlo, tendremos un SyntaxError. Esto es lógico ya que Python usa internamente True para representar el tipo booleano.

def True():
pass
# SyntaxError: invalid syntax

Análogamente, no podemos llamar a una variable is ya que se trata del operador de identidad.

is = 4
# SyntaxError: invalid syntax

Resulta lógico que no se nos permita realizar esto, ya que de ser posible, podríamos romper el lenguaje. Algo muy importante a tener en cuenta es que palabras como list no están reservadas, y esto es algo que puede generar problemas. El siguiente código crea una lista usando la función estándar de Python list().

a = list("letras")
print(a)
# ['l', 'e', 't', 'r', 'a', 's']

Sin embargo, y aunque pueda parece extraño, podemos crear una función con ese nombre. Al hacer esto, nos estamos cargando la función list() de Python, y por lo tanto al intentar hacer la llamada anterior falla, ya que nuestra función en este caso no acepta argumentos. Mucho cuidado con esto.

def list():
print("Funcion list")

a = list("letras")
# TypeError: list() takes 0 positional arguments but 1 was given

Pero volviendo a las palabras reservadas, Python nos ofrece una forma de acceder a estas palabras programmatically, es decir, a través de código. Aquí tenemos un listado con todas las palabras reservadas.

import keyword
print(keyword.kwlist)

# ['False', 'None', 'True', 'and', 'as', 'assert',
# 'async', 'await', 'break', 'class', 'continue',
# 'def', 'del', 'elif', 'else', 'except', 'finally',
# 'for', 'from', 'global', 'if', 'import', 'in', 'is',
# 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
# 'return', 'try', 'while', 'with', 'yield']

Vistas ya las palabras reservadas de Python, a continuación explicaremos para que sirve cada una de ellas y las pondremos en contexto.

Condicionales: if, elif, else

El uso del if y los condicionales en general son la base de cualquier lenguaje de programación. Son usados para alterar la línea de ejecución del programa en función de determinadas condiciones.

En el siguiente ejemplo podemos ver su uso. De los tres bloques, sólo se ejecutará uno de ellos, el cual cumpla la condición establecida sobre lenguaje.

lenguaje = "Python"

if lenguaje == "Python":
print("Estoy de acuerdo, Python es el mejor")
elif lenguaje == "Java":
print("No me gusta, Java no mola")
else:
print("Ningún otro lenguaje supera a Python")

# Salida: Estoy de acuerdo, Python es el mejor

Bucles: while, for, break, continue

El while y for permiten crear bucles que ejecutan una sección de código repetidas veces. Por otro lado el continue y el break permiten realizar alteraciones sobre el bucle.

El while ejecuta su sección de código mientras se cumpla una determinada condición.

x = 0
while x < 3:
print(x)
x += 1

# Salida: 0, 1, 2

El for permite iterar clases iterables, ejecutando la sección de código tantas veces como elementos tiene el iterable.

for i in range(3):
print(i)

# Salida: 0, 1, 2

El continue salta hasta el final del bloque, dejando sin ejecutar lo restante, pero continúa en la siguiente iteración.

for i in range(3):
if i == 1:
continue
print(i)

# Salida: 0, 2

Por último, el break rompe la ejecución del bucle, saliendo del mismo.

x = 0
while True:
print(x)
if x == 2:
break
x += 1

# Salida: 0, 1, 2

Valores: False, True, None

FalseTrue y None son valores que pueden ser asignados a variables, siendo los dos primeros booleanos y el último algo parecido al null de otros lenguajes de programación.

Si realizamos una comparación usando el operador relacional == se nos devolverá True o False.

x = (5 == 1)
print(x)
# Salida: False

También podemos asignar nosotros True a una variable.

x = True
if x:
print("Python!")

# Salida: Python!

Por otro lado None se devuelve por defecto cuando una función no cuenta con un return.

def mi_funcion():
pass

print(mi_funcion())
# Salida: None

Operadores lógicos: and, or, not

El andor y not son operadores lógicos que actúan sobre valores booleanos. El primero es verdadero si y solo si todos los operandos son verdaderos. El segundo devuelve verdadero si al menos un elemento es verdadero. Y por último, el not invierte verdadero por falso y viceversa.

print(True and False) # False
print(True or False) # True
print(not True) # False

Funciones: def, return, lambda, pass, yield

Todas ellas relacionadas con las funciones. El uso de def nos permite crear una función.

def funcion_suma(a, b):
print("La suma es", a + b)

funcion_suma(3, 5)

# Salida: La suma es 8

Si queremos que la función devuelva uno o varios valores, podemos usar return.

def funcion_suma(a, b):
return a + b

suma = funcion_suma(3, 5)
print("La suma es", suma)

# Salida: La suma es 8

El uso de lambda nos permite crear funciones lambda, una especie de funciones “para vagos”. Dichas funciones no tienen un nombre per se, salvo asignado explícitamente.

print("La suma es", (lambda a, b: a + b)(3, 5))

# Salida: La suma es 8

Por otro lado, podemos usar pass cuando no queramos definir la función, es decir si la queremos dejar en blanco por el momento. Nótese que también puede ser usado en clases, estructuras de control, etc.

def funcion_suma(a, b):
pass

Por último, yield está asociado a los generadores y las corrutinas, un concepto un tanto avanzado pero muy interesante. En el siguiente generador vemos como se generan tres valores, obteniendo uno cada vez que iteramos el generador.

def generador():
n = 1
yield n

n += 1
yield n

n += 1
yield n

for i in generador():
print(i)

# Salida: 1, 2, 3

Los generadores pueden ser usados para generar secuencias infinitas de valores, sin que tengan que ser almacenados a priori, siendo creados bajo demanda. Este es una utilidad muy importante trabajando con listas muy grandes, cuyo almacenamiento en memoria sería muy costoso.

Clases: class

El uso de class nos permite crear clases. Las clases son el núcleo de la programación orientada objetos, y son una especie de estructura de datos que agrupa un conjunto de funciones (métodos) y variables (atributos).

class MiClase:
def __init__(self):
print("Creando objeto de MiClase")

objeto = MiClase()

# Salida: Creando objeto de MiClase

Excepciones: assert, try, except, finally, raise

Las palabras clave asserttryexceptfinally y raise están relacionadas con las excepciones, y nos permiten tratar el qué hacer cuando las cosas no salen como esperamos. El siguiente código intenta hacer un cast de cadena a entero, manejando un posible error.

  • Si x="10" el casteo se realiza sin problemas, ya que es posible representar esa cadena como un entero. Sin embargo hay que estar preparados siempre para lo peor.
  • Si x="a" no se podría hacer int() y tendríamos un error. Si no manejamos este error, el programa se pararía, y esto no es algo deseable. El uso de tryexcept y finally nos permite controlar dicho error y actuar en consecuencia sin que el programa se pare.

x = "10"

valor = None
try:
valor = int(x)
except Exception as e:
print("Hubo un error:", e)
finally:
print("El valor es", valor)

# Salida: El valor es 10

Variables: global, nonlocal

El uso de global permite realizar lo siguiente, y de no usarlo tendríamos un UnboundLocalError. Aunque puede resultar muy útil, mucho cuidado con las variables globales.

a = 0

def suma_uno():
global a
a = a + 1

suma_uno()
print(a)

# Salida: 1

El uso de nonlocal es útil cuando tenemos funciones anidadas. El el siguiente ejemplo podemos ver como cuando funcion_b modifica x, también afecta a la x de la funcion_a, ya que la hemos declarado como nonlocal. Te invitamos a que elimines el nonlocal y veas el comportamiento.

def funcion_a():
x = 10

def funcion_b():
nonlocal x
x = 20
print("funcion_b", x)

funcion_b()
print("funcion_a", x)


funcion_a()

# Salida:
# funcion_b 20
# funcion_a 20

Módulos: from, import

El uso de from e import nos permite importar módulos o librerías, tanto estándar de Python como externas o definidas por nosotros. En ejemplos como este es donde podemos ver que la sintaxis de Python se asemeja bastante al lenguaje natural: de collections importa namedtuple.

from collections import namedtuple

Pertenencia e Identidad: in, is

El uso de in nos permite saber si un determinado elemento está en una clase iterable, devolviendo True en el caso de que sea cierto.

lista = ["a", "b", "c"]
print("a" in lista)

# Salida: True

El uso de is nos permite saber si dos variables apuntan en realidad al mismo objeto. Por debajo se usa la función id() y es importante notar que la igualdad == no implica que is sea True.

a = [1, 2]
b = [1, 2]
c = a

print(a is b) # False
print(a is c) # True

Eliminar variables: del

El uso de del nos permite eliminar una variable del scope, pudiendo resultar útil cuando trabajamos con variables que almacenan gran cantidad de datos. Es una manera explícita de indicar que ya no queremos una variable, pero no olvidemos que Python tiene gargabe collector.

a = 10
del a
print(a)

# Salida: NameError: name 'a' is not defined

Context Managers: with, as

El uso de with y as es muy utilizado a la hora de manejar ficheros, pero en realidad pertenecen a los context managers o gestores de contexto, un concepto algo avanzado.

with open('fichero.txt', 'r') as file:
print(file.read())

Concurrencia: async, await

El uso de async y await nos permite ejecutar procesos de manera concurrente en vez de secuencial. Imaginemos un proceso() que tarda 10 segundos en ejecutarse, ya que realiza una petición a una base de datos que lo bloquea durante ese tiempo. Sin esta herramienta, si quisiéramos ejecutar 3 veces el proceso tardaríamos 30 segundos, ya que por defecto se ejecutan de manera secuencial, hasta que uno no acaba no pasamos al siguiente.

Sin embargo, creando una función async y usando await, podemos paralelizar la ejecución de los procesos, aprovechando el tiempo “muerto” mientras se retorna al await. En el siguiente ejemplo podemos ver como se tarda unos 10 segundos en ejecutar los 3 procesos.

import asyncio

async def proceso(id_proceso):
print("Empieza proceso:", id_proceso)
await asyncio.sleep(10)
print("Acaba proceso:", id_proceso)

async def main():
await asyncio.gather(proceso(1), proceso(2), proceso(3))

asyncio.run(main())

# Salida:
# Empieza proceso: 1
# Empieza proceso: 2
# Empieza proceso: 3
# Acaba proceso: 1
# Acaba proceso: 2
# Acaba proceso: 3

WhatsApp