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:
Sintaxis clara y legible: Su diseño enfatiza la legibilidad del código, lo que facilita su aprendizaje y mantenimiento.
Versatilidad: Es un lenguaje multipropósito, utilizado en desarrollo web, ciencia de datos, inteligencia artificial, automatización, scripting y más.
Comunidad y ecosistema: Cuenta con una comunidad activa y una vasta colección de librerías y frameworks (como Django, Flask, NumPy, Pandas, TensorFlow) que aceleran el desarrollo.
Multiplataforma: Puede ejecutarse en diversos sistemas operativos como Windows, macOS y Linux sin necesidad de modificar el código.
Gratuito y de código abierto: Es de uso libre y su código fuente está disponible para que cualquiera pueda inspeccionarlo y modificarlo.
Alta productividad: Permite escribir menos líneas de código para realizar tareas complejas en comparación con otros lenguajes, lo que aumenta la eficiencia del desarrollador.
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¶
Descarga el instalador desde python.org
Ejecuta el instalador
Importante: Marca “Add Python to PATH”
Verifica la instalación:
python --version pip --version
# Actualizar repositorios
sudo apt update
# Instalar Python y pip
sudo apt install python3 python3-pip
# Verificar instalación
python3 --version
pip3 --version# Usando Homebrew (recomendado)
brew install python
# o usando el instalador oficial desde python.org
# Verificar instalación
python3 --version
pip3 --version6Recursos para aprender Python¶
Para profundizar en Python, puedes consultar los siguientes recursos: