Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Python es un lenguaje de programación multipropósito, creado a fines de los años 80 por Guido van Rossum.

Python fue concebido a finales de los años 80 como sucesor del lenguaje ABC, con el objetivo de crear un lenguaje más legible y fácil de usar. La primera versión pública (0.9.0) fue lanzada en 1991, y desde entonces ha evolucionado significativamente. Python 2.0 llegó en 2000 con importantes mejoras como la recolección de basura y soporte para Unicode. En 2008 se lanzó Python 3.0, una revisión mayor del lenguaje que rompió la compatibilidad hacia atrás para corregir defectos fundamentales del diseño. Aunque la transición fue gradual y a veces controvertida, Python 3 es ahora el estándar, con Python 2 oficialmente descontinuado desde 2020.

Guido van Rossum lideró el desarrollo de Python hasta 2018, cuando renunció como “Benevolente Dictador Vitalicio” (BDFL). Desde entonces, Python es gobernado por un Consejo Directivo elegido por la comunidad. Para más detalles sobre la historia de Python, consulta Wikipedia.

1Ventajas de Python

Python ofrece numerosas ventajas que lo han convertido en uno de los lenguajes de programación más populares:

2El zen de Python

El Zen de Python es una colección de principios que guían el diseño y la filosofía del lenguaje:

The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Estos principios enfatizan la importancia de escribir código claro, legible y elegante.

3Características principales

3.1Multiparadigma

Python es un lenguaje de programación orientado a objetos, introspectivo y reflexivo, imperativo y funcional.

Permite usar diferentes estilos de programación según las necesidades del proyecto, incluso combinando varios estilos en un mismo proyecto.

La programación imperativa se basa en la ejecución secuencial de instrucciones. Para realizar una tarea se debe programar paso a paso especificando cómo se debe hacer.

# Programación imperativa
def factorial(n):
    resultado = 1
    for i in range(1, n + 1):
        resultado *= i
    return resultado

print(f"Factorial de 5: {factorial(5)}")
Output
Factorial de 5: 120

La programación funcional se basa en el uso de funciones puras. Este paradigma se enfoca en qué se debe hacer, utilizando funciones de orden superior y minimizando la dependencia de estados mutables para evitar efectos secundarios. En el capítulo de funciones profundizaremos un poco más en este paradigma.

A continuación se muestra un ejemplo de una función pura que ordena una lista de números utilizando el algoritmo Quicksort, utilizando técnicas de la programación funcional.

# Quicksort en una línea (expresión)
qs = lambda lst: (
    lst
    if len(lst) <= 1
    else qs([x for x in lst[1:] if x < lst[0]])
    + [lst[0]]
    + qs([x for x in lst[1:] if x >= lst[0]])
)

lista = [3, 6, 8, 10, 1, 2, 1]
print(f"Lista ordenada: {qs(lista)}")
Output
Lista ordenada: [1, 1, 2, 3, 6, 8, 10]

3.2Fuertemente tipado y dinámico

Python es un lenguaje fuertemente tipado, lo que significa que no se permite realizar operaciones entre tipos de datos incompatibles sin conversión explícita.

resultado = "5" + 3
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
Cell In[4], line 1
----> 1 resultado = "5" + 3

TypeError: can only concatenate str (not "int") to str
# Conversión explícita necesaria
resultado = int("5") + 3

print(f"Resultado: {resultado}")
Output
Resultado: 8

El tipado dinámico de Python permite que las variables cambien de tipo a lo largo del tiempo, lo que puede ser beneficioso en ciertos casos pero también puede llevar a errores difíciles de depurar si no se maneja correctamente.

"""
Tipado dinámico: las variables pueden cambiar de tipo
"""

variable = 42

print(f"Tipo: {type(variable)}, Valor: {variable}")

variable = "Python"  # str

print(f"Tipo: {type(variable)}, Valor: {variable}")

variable = [1, 2, 3]  # list

print(f"Tipo: {type(variable)}, Valor: {variable}")
Output
Tipo: <class 'int'>, Valor: 42
Tipo: <class 'str'>, Valor: Python
Tipo: <class 'list'>, Valor: [1, 2, 3]

En este fragmento el mismo identificador variable se liga a diferentes tipos de datos a lo largo del tiempo. En cada asignación Python infiere el tipo de la variable automáticamente.

3.3Sintaxis clara y legible

Python se caracteriza por su sintaxis clara y legible:

def es_numero_primo(n):
    """
    Determina si un número es primo.

    Args:
        n (int): El número a evaluar

    Returns:
        bool: True si es primo, False en caso contrario
    """
    if n < 2:
        return False

    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False

    return True


# Filtra una lista de números quedándose solo con los primos
numeros = [2, 3, 4, 5, 17, 25, 29]
primos = [num for num in numeros if es_numero_primo(num)]

print(f"Números primos: {primos}")
Output
Números primos: [2, 3, 5, 17, 29]

Los bloques de código se delimitan por indentación, lo que mejora la legibilidad y evita errores comunes de sintaxis.

En la línea 1 se define una función es_numero_primo que recibe un número entero n y devuelve True si es primo, o False en caso contrario. La definición de una función se realiza con la palabra clave def, seguida del nombre de la función, los parámetros entre paréntesis y dos puntos (:). Los dos puntos indican el inicio de un bloque de código que debe estar indentado, en este caso el cuerpo de la función.

El cuerpo de la función se extiende hasta la línea 18, a partir de la cual el código vuelve a estar alineado a la izquierda, indicando que ya no forma parte del bloque de la función.

Entre las líneas 2 y 10 encontramos la documentación de la función, que explica su propósito, los argumentos que recibe y el valor que devuelve. Esta documentación se escribe entre comillas triples (""") y es accesible a través de la función help(es_numero_primo). help es una función de Python que muestra la documentación de un objeto.

help(es_numero_primo)
Output
Help on function es_numero_primo in module __main__:

es_numero_primo(n)
    Determina si un número es primo.

    Args:
        n (int): El número a evaluar

    Returns:
        bool: True si es primo, False en caso contrario

Esta forma de documentar junto con el código mismo es una buena práctica que facilita la comprensión y el mantenimiento del código.

La forma de indentar los bloques de código es fundamental en Python. A diferencia de otros lenguajes que utilizan llaves ({, }) o palabras clave como begin y end, Python utiliza la indentación para definir el alcance de los bloques de código. Esto significa que todos los bloques deben estar correctamente indentados para evitar errores de sintaxis. Por ejemplo, la indentación puede ser de 4 espacios, que es la convención más común en Python.

x = 42

if es_numero_primo(x):
    print("La identación en cada línea de un bloque")
     print("debe ser identica, de lo contrario el código")
   print("reportará un error")
  File <string>:6
    print("reportará un error")
                               ^
IndentationError: unindent does not match any outer indentation level

4Aplicaciones de Python

Python se utiliza en una amplia gama de aplicaciones, gracias a su versatilidad y a la gran cantidad de bibliotecas y frameworks disponibles. Algunas de las áreas más comunes son:

Área

Frameworks/Bibliotecas

Ejemplos de uso

Desarrollo web

Django, Flask, FastAPI

Sitios web, APIs REST, aplicaciones web

Ciencia de datos

Pandas, NumPy, Matplotlib

Análisis de datos, visualización

Machine Learning

TensorFlow, PyTorch, Scikit-learn

Modelos predictivos, IA

Automatización

Selenium, Requests, Beautiful Soup

Web scraping, automatización de tareas

Desarrollo de juegos

Pygame, Panda3D

Juegos 2D y 3D

5Instalación y configuración

Windows
Linux (Ubuntu/Debian)
macOS
  1. Descarga el instalador desde python.org

  2. Ejecuta el instalador

  3. Importante: Marca “Add Python to PATH”

  4. Verifica la instalación:

    python --version
    pip --version

6Recursos para aprender Python

Para profundizar en Python, puedes consultar los siguientes recursos: