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.
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.
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.
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).
# 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!")
¿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
Calidad e Integración
Data Science, Machine Learning e Inteligencia Artificial. El conocimiento de Python es casi esencial para carreras en estos campos.
¿Quién Usa Python Hoy?
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
>>> 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.
Siempre crea un entorno virtual cuando inicies un nuevo proyecto.
Crear tu Primer Entorno Virtual
# 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
# 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
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
python script.pyEl 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 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()
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.
Ejemplo de Estructura
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.
# 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
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
>>> 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
# 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()
13 desde scope local
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.
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!
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.