lunes, 19 de enero de 2026

Aprendiendo Python de 0 a experto - Introduccion a Python

Una Introducción Amable a Python
Learn Python // Chapter 01

Una Introducción Amable a Python

Tu primer paso hacia el dominio de uno de los lenguajes más poderosos del mundo

La programación de computadoras es la composición de secuencias de instrucciones, llamadas programas, que las computadoras pueden seguir para realizar tareas. En esencia, es decirle a una computadora qué hacer usando un lenguaje que ella entienda.

El buen código es corto, rápido, elegante, fácil de leer y fácil de mantener. Toma tiempo escribir código que tenga todas estas cualidades simultáneamente, pero la buena noticia es que estás dando el primer paso en este momento.

SECTION_01

Enter the Python

Python es la maravillosa creación de Guido Van Rossum, un científico de computación y matemático holandés que decidió regalar al mundo un proyecto en el que estaba trabajando durante la Navidad de 1989. El lenguaje apareció públicamente alrededor de 1991, y desde entonces ha evolucionado para convertirse en uno de los lenguajes de programación líderes a nivel mundial.

Da un pescado a un hombre y lo alimentas por un día. Enséñale a pescar y lo alimentas para toda la vida.

— Proverbio Chino

Cada objeto en Python tiene tres características fundamentales: un ID (identidad única), un tipo y un valor. Una vez creado, el ID de un objeto nunca cambia — es un identificador único usado por Python para recuperar el objeto cuando lo necesitamos.

Anatomía de un Objeto Python
OBJETO
ID (único)
Tipo (int, str...)
Valor (datos)

Propiedades y Métodos

Los objetos tienen dos características clave: propiedades (características del objeto, como nombre, edad, color) y métodos (acciones que el objeto puede realizar, como hablar, caminar, calcular).

objects_example.py
# Un objeto persona con propiedades y métodos
class Person:
    def __init__(self, name, age):
        self.name = name     # Propiedad
        self.age = age       # Propiedad
    
    def speak(self, message):  # Método
        print(f"{self.name} dice: {message}")

# Crear y usar un objeto
dev = Person("Alice", 28)
dev.speak("¡Hola, Python!")
python objects_example.py
Alice dice: ¡Hola, Python!
SECTION_02

¿Por qué Python?

Python epitomiza las cualidades que hacen a un lenguaje de programación verdaderamente poderoso y accesible. Estas son las razones principales por las que millones de desarrolladores lo eligen como su herramienta favorita.

Características Principales

PORTABILIDAD
Python corre en todas partes. Portar un programa de Linux a Windows o Mac es usualmente solo cuestión de ajustar rutas y configuraciones.
COHERENCIA
Python es extremadamente lógico y coherente. La mayoría del tiempo puedes adivinar cómo se llama un método si no lo conoces.
PRODUCTIVIDAD
Un programa Python típicamente es 1/5 a 1/3 del tamaño del código equivalente en Java o C++. Menos código significa menos bugs.
LIBRERÍA EXTENSA
Python viene con "baterías incluidas" — una biblioteca estándar increíblemente extensa más miles de paquetes en PyPI.

Calidad e Integración

LEGIBILIDAD
Código uniforme y fácil de leer, crucial para el trabajo en equipo
MULTIPARADIGMA
Scripting, OOP, imperativo y funcional — extremadamente versátil
INTEGRACIÓN
Se extiende e integra con C, C++, Java y muchos otros lenguajes
Python es el lenguaje más popular en Data Science, Machine Learning e Inteligencia Artificial. El conocimiento de Python es casi esencial para carreras en estos campos.

¿Quién Usa Python Hoy?

Google
Instagram
Netflix
Spotify
NASA
CERN
Dropbox
Reddit
SECTION_03

Configuración del Entorno

Antes de comenzar a programar, necesitas tener Python instalado en tu sistema. El lugar donde debes comenzar es el sitio web oficial: python.org.

Verificar Versión de Python

python_console
>>> import sys
>>> print(sys.version)
3.12.2 (main, Feb 14 2024, 14:16:36)
[Clang 15.0.0 (clang-1500.1.0.2.5)]

Entornos Virtuales

Los entornos virtuales son entornos Python aislados, cada uno es una carpeta que contiene todos los ejecutables necesarios para usar los paquetes que un proyecto Python necesitaría.

Por qué Entornos Virtuales
Proyecto X
Django 4.2
← AISLADOS →
Proyecto Y
Django 5.0
Regla de Oro: Nunca instales librerías directamente a nivel del sistema. Linux depende de Python para muchas tareas — si modificas la instalación del sistema, arriesgas comprometer la integridad de todo el sistema. Siempre crea un entorno virtual cuando inicies un nuevo proyecto.

Crear tu Primer Entorno Virtual

terminal (macOS/Linux)
# Paso 1: Crear carpeta del proyecto
$ mkdir my-project
$ cd my-project

# Paso 2: Crear entorno virtual
$ python3.12 -m venv lpp4ed

# Paso 3: Activar el entorno
$ source ./lpp4ed/bin/activate

# Verificar que estamos en el entorno
(lpp4ed) $ which python
/Users/user/my-project/lpp4ed/bin/python

# Paso 4: Trabajar con Python
(lpp4ed) $ python
Python 3.12.2 ...
>>> exit()

# Paso 5: Desactivar cuando termines
(lpp4ed) $ deactivate
terminal (Windows PowerShell)
# Crear proyecto y entorno
PS> mkdir my-project
PS> cd my-project
PS> py -3.12 -m venv lpp4ed

# Activar el entorno
PS> .\lpp4ed\Scripts\activate

# Desactivar
(lpp4ed) PS> deactivate
SECTION_04

Cómo Ejecutar Python

Python puede ejecutarse de varias formas diferentes, cada una con sus propios casos de uso y ventajas.

Formas de Ejecución

SCRIPTS (.py)
Archivos de texto con extensión .py que contienen código Python. Se ejecutan con: python script.py
SHELL INTERACTIVO
Ejecuta código línea por línea. Perfecto para experimentar y debuggear rápidamente.
COMO SERVICIO
Python ejecutándose como aplicación backend, APIs web, microservicios.
APLICACIÓN GUI
Interfaces gráficas con Tkinter, PyQT, wxPython, o Kivy.

El Shell Interactivo

El shell interactivo es increíblemente útil para debuggear rápidamente, verificar si una estructura de datos soporta una operación, o probar fragmentos de código.

python_shell
$ python
Python 3.12.2 ...
Type "help", "copyright", "credits" or "license" for more information.

>>> 1 + 1
2

>>> name = "Python"
>>> name * 3
'PythonPythonPython'

>>> 2 ** 1024  # ¡Python maneja números enormes!
179769313486231590772930519078902473361797697894...

>>> exit()
Python puede elevar 2 a la potencia de 1024 sin problema alguno. Intenta hacer esto en Java, C++ o C# — no funcionará sin librerías especiales para manejar números grandes.
SECTION_05

Organización del Código

Cuando guardas un archivo con la extensión .py, ese archivo se dice que es un módulo Python. Pero no es práctico guardar todo el código en un solo archivo — Python te proporciona otra estructura llamada paquete.

Estructura de un Proyecto Python
Proyecto
Paquetes (carpetas)
Módulos (.py)

Ejemplo de Estructura

tree example/
example/
├── core.py          # Lógica principal
├── run.py           # Punto de entrada
└── util/            # Paquete de utilidades
    ├── __init__.py  # Marca la carpeta como paquete
    ├── db.py        # Utilidades de base de datos
    ├── maths.py     # Utilidades matemáticas
    └── network.py   # Utilidades de red

Importar y Reusar Código

El principio DRY (Don't Repeat Yourself) nos dice: nunca repitas la misma pieza de código más de una vez en tu aplicación. Python proporciona las herramientas para aplicar esta mejor práctica.

using_libraries.py
# Importar desde la librería estándar
from math import factorial

# Calcular 5! = 5 × 4 × 3 × 2 × 1
result = factorial(5)
print(f"5! = {result}")

# Importar desde nuestro paquete util
from util.maths import custom_calculation
from util.db import connect_database
python using_libraries.py
5! = 120
SECTION_06

Nombres y Namespaces

Cuando escribimos código, necesitamos organizarlo para que alguien sin conocimiento previo pueda encontrar lo que busca. Los nombres en Python son la abstracción más cercana a lo que otros lenguajes llaman "variables".

Creando Nombres

names_example.py
>>> n = 3  # nombre → objeto int
>>> address = "221b Baker Street, London"  # nombre → objeto str
>>> employee = {
...     'age': 45,
...     'role': 'CTO',
...     'SSN': 'AB1234567',
... }  # nombre → objeto dict

>>> n
3
>>> address
'221b Baker Street, London'
>>> employee
{'age': 45, 'role': 'CTO', 'SSN': 'AB1234567'}

>>> other_name  # nombre no definido
NameError: name 'other_name' is not defined

Un namespace es un mapeo de nombres a objetos. Ejemplos incluyen el conjunto de nombres built-in (funciones siempre accesibles), los nombres globales en un módulo, y los nombres locales en una función.

Regla LEGB de Scopes

Orden de Búsqueda de Nombres
L: Local
E: Enclosing
G: Global
B: Built-in
scopes_example.py
# Scope Global
age = 5

def enclosing_func():
    # Scope Enclosing
    age = 13
    
    def local():
        # Scope Local - busca 'age' en LEGB
        # No encuentra en Local, encuentra en Enclosing
        print(age, 'desde scope local')
    
    local()

print(age, 'desde scope global')
enclosing_func()
python scopes_example.py
5 desde scope global
13 desde scope local
SECTION_07

Guías para Escribir Buen Código

Escribir buen código no es tan fácil como parece. Es un arte. Sin embargo, hay algo que puedes adoptar que hará tu código instantáneamente mejor: PEP 8.

PEP 8
Guía de estilo oficial de Python — define la estética del código Python bello e idiomático
BLACK / RUFF
Herramientas para formatear automáticamente tu código según PEP 8
FLAKE8 / PYLINT
Linters que verifican si tu código está formateado correctamente

El Zen de Python

Python tiene un "huevo de pascua" muy querido por la comunidad. Escribe import this en la consola para revelarlo:

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.

Disperso es mejor que denso.

La legibilidad cuenta.

Los casos especiales no son tan especiales como para romper las reglas.

Aunque la practicidad le gana a la pureza.

Los errores nunca deberían pasar silenciosamente.

A menos que se silencien explícitamente.

Frente a la ambigüedad, rechaza la tentación de adivinar.

Debería haber una — y preferiblemente solo una — manera obvia de hacerlo.

Ahora es mejor que nunca.

Aunque nunca es a menudo 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 ser una buena idea.

Los namespaces son una gran idea — ¡hagamos más de esos!

Regla de Indentación: Usa 4 espacios para la indentación. No uses tabs, no los mezcles con espacios. Usa cuatro espacios, no dos, no tres, no cinco. Solo cuatro. El mundo entero funciona así.

Resumen del Capítulo

01 // Python es Objetos

Todo en Python es un objeto con ID, tipo y valor. Los nombres se vinculan a objetos en namespaces.

02 // Características Clave

Portable, coherente, productivo, con librería extensa, multiparadigma y excelente para Data Science.

03 // Entornos Virtuales

Siempre usa entornos virtuales aislados para cada proyecto. Nunca instales a nivel del sistema.

04 // Organización

Código organizado en módulos (.py) y paquetes (carpetas). Sigue PEP 8 y el Zen de Python.

Basado en "Learn Python Programming" 4th Edition // Fabrizio Romano & Heinrich Kruger