Python
Tutorial Python: Introducción a Python
Aprende los fundamentos de Python, su sintaxis clara y conceptos esenciales para principiantes en programación con este tutorial completo.
Aprende Python y certifícate¿Qué es Python?
Python es un lenguaje de programación creado por Guido van Rossum y lanzado por primera vez en 1991. Se ha convertido en uno de los lenguajes más populares del mundo debido a su simplicidad y versatilidad.
A diferencia de otros lenguajes que pueden resultar intimidantes para principiantes, Python fue diseñado con la legibilidad como prioridad. Su sintaxis utiliza espacios en blanco (indentación) para definir bloques de código, lo que hace que los programas sean más fáciles de leer y entender, incluso para quienes están dando sus primeros pasos en la programación.
Características principales
Fácil de aprender: Python tiene una sintaxis clara y sencilla que se parece mucho al inglés cotidiano.
Interpretado: No necesita ser compilado antes de ejecutarse, lo que significa que puedes escribir código y ver los resultados inmediatamente.
Multiplataforma: Funciona en diferentes sistemas operativos como Windows, macOS y Linux.
Multiparadigma: Soporta diferentes estilos de programación, lo que te da flexibilidad para resolver problemas de distintas maneras.
Tipado dinámico: No necesitas declarar el tipo de datos de las variables, Python lo determina automáticamente.
Un primer vistazo al código
Veamos un ejemplo sencillo de código Python:
# Este es un comentario
print("¡Hola, mundo!")
Este programa simplemente muestra el mensaje "¡Hola, mundo!" en la pantalla. Observa lo simple que es comparado con otros lenguajes que requieren más código para lograr lo mismo.
Otro ejemplo un poco más elaborado:
nombre = input("¿Cómo te llamas? ")
print(f"¡Hola, {nombre}! Bienvenido al mundo de Python")
Este programa pide al usuario que introduzca su nombre y luego lo saluda personalmente.
¿Para qué se usa Python?
Python es extremadamente versátil y se utiliza en muchos campos diferentes:
Desarrollo web: Para crear sitios y aplicaciones web.
Análisis de datos: Muy popular entre científicos y analistas para procesar y visualizar información.
Inteligencia artificial: Utilizado ampliamente en aprendizaje automático y procesamiento del lenguaje natural.
Automatización: Para crear scripts que realicen tareas repetitivas.
Desarrollo de videojuegos: Aunque no es su uso principal, existen herramientas como Pygame para crear juegos sencillos.
Aplicaciones de escritorio: Para crear programas con interfaces gráficas.
Versiones de Python
Actualmente existen dos versiones principales de Python:
Python 2: Una versión más antigua que dejó de recibir soporte oficial en 2020.
Python 3: La versión actual y recomendada, que incluye mejoras significativas sobre Python 2.
Como principiante, te recomendamos usar Python 3, ya que es la versión con soporte activo y la que utilizaremos en este curso.
La filosofía de Python
Python tiene una filosofía de diseño conocida como "El Zen de Python", que enfatiza la claridad y simplicidad. Algunos de sus principios son:
- Simple es mejor que complejo
- Legible es mejor que confuso
- Lo explícito es mejor que lo implícito
Esta filosofía ha contribuido a que Python sea un lenguaje tan accesible y agradable de usar.
La comunidad de Python
Una de las grandes fortalezas de Python es su comunidad activa y acogedora. Hay miles de recursos gratuitos, tutoriales, documentación y bibliotecas creadas por la comunidad que hacen que aprender y usar Python sea más fácil.
Python también cuenta con una extensa biblioteca estándar que viene incluida con el lenguaje, proporcionando herramientas para muchas tareas comunes sin necesidad de instalar software adicional.
¿Por qué Python es ideal para principiantes?
Curva de aprendizaje suave: Puedes empezar a crear programas útiles rápidamente.
Sintaxis clara: El código es fácil de leer y entender.
Versatilidad: Lo que aprendas te servirá para muchos tipos de proyectos diferentes.
Comunidad de apoyo: Encontrarás respuestas a casi cualquier pregunta en línea.
Demanda laboral: Las habilidades en Python son muy valoradas en el mercado laboral actual.
En resumen, Python es un lenguaje de programación accesible, potente y versátil que ofrece un excelente punto de entrada al mundo de la programación. A lo largo de este curso, descubrirás por qué tantas personas eligen Python como su primer lenguaje de programación y cómo puedes utilizarlo para crear desde simples scripts hasta aplicaciones complejas.
Fundamentos teóricos de Python
Python se basa en una serie de principios fundamentales que definen cómo funciona el lenguaje y cómo interactuamos con él. Estos fundamentos teóricos son importantes para entender por qué Python se comporta de cierta manera y cómo podemos aprovechar al máximo sus características.
El modelo de ejecución
Python es un lenguaje interpretado, lo que significa que el código se ejecuta línea por línea por un programa llamado intérprete. Esto contrasta con los lenguajes compilados, donde todo el código debe convertirse primero a lenguaje máquina antes de ejecutarse.
Cuando ejecutas un programa Python, ocurre el siguiente proceso:
- El intérprete lee el código fuente
- Lo convierte a un formato intermedio llamado bytecode
- Ejecuta este bytecode en la máquina virtual de Python (PVM)
Este modelo permite una gran flexibilidad y facilita el desarrollo, ya que puedes probar tu código inmediatamente sin esperar a que se compile.
Tipado dinámico
Python utiliza un sistema de tipado dinámico, lo que significa que:
- No necesitas declarar el tipo de una variable al crearla
- Una variable puede cambiar de tipo durante la ejecución del programa
- El tipo se asocia al valor, no a la variable
Por ejemplo:
# La variable 'x' contiene un número entero
x = 10
print(type(x)) # Muestra: <class 'int'>
# Ahora 'x' contiene una cadena de texto
x = "hola"
print(type(x)) # Muestra: <class 'str'>
Este comportamiento hace que Python sea muy flexible, pero también requiere que prestes atención a los tipos de datos con los que estás trabajando.
Todo es un objeto
En Python, absolutamente todo es un objeto. Números, cadenas de texto, funciones, clases, módulos... todos son objetos. Esto significa que:
- Cada elemento tiene un tipo o clase
- Cada elemento tiene atributos (datos) y métodos (funciones)
- Cada elemento puede ser asignado a una variable o pasado como argumento
Puedes comprobar esto usando la función type()
:
print(type(42)) # <class 'int'>
print(type("texto")) # <class 'str'>
print(type(print)) # <class 'builtin_function_or_method'>
Esta característica proporciona una consistencia fundamental al lenguaje y permite tratar diferentes tipos de datos de manera uniforme.
Espacios de nombres y ámbito
Python organiza sus variables y nombres en espacios de nombres (namespaces), que son como diccionarios que mapean nombres a objetos. Existen varios tipos:
- Espacio de nombres local: Variables dentro de una función
- Espacio de nombres global: Variables en el nivel superior de un módulo
- Espacio de nombres incorporado: Nombres predefinidos como
print
,list
, etc.
El ámbito (scope) determina dónde es visible un nombre. Python sigue la regla LEGB para buscar nombres:
- Local (local): Dentro de la función actual
- Enclosing (envolvente): En funciones exteriores
- Global (global): En el nivel superior del módulo
- Built-in (incorporado): En el módulo de nombres predefinidos
x = 10 # Variable global
def funcion():
y = 5 # Variable local
print(x) # Puede acceder a la variable global
print(y) # Puede acceder a la variable local
funcion()
# print(y) # Esto daría error porque 'y' no existe fuera de la función
Entender estos conceptos te ayudará a evitar errores comunes relacionados con el ámbito de las variables.
Indentación y bloques de código
A diferencia de muchos otros lenguajes que usan llaves {}
o palabras clave para delimitar bloques de código, Python utiliza la indentación (espacios al principio de la línea). Esto hace que el código sea más legible y consistente.
if temperatura > 25:
print("Hace calor")
if humedad > 80:
print("Y está húmedo")
else:
print("No hace calor")
La indentación no es solo una cuestión de estilo, sino una parte fundamental de la sintaxis de Python. Un error en la indentación puede cambiar completamente el significado del código o provocar un error de sintaxis.
Paso por referencia
En Python, las variables son referencias a objetos en memoria. Cuando pasas una variable a una función, estás pasando la referencia, no una copia del objeto. Esto significa que:
- Si modificas un objeto mutable (como una lista) dentro de una función, el cambio será visible fuera de ella
- Si reasignas la variable dentro de la función, solo cambias la referencia local, no la original
def modificar_lista(lista):
lista.append(4) # Esto modifica la lista original
numeros = [1, 2, 3]
modificar_lista(numeros)
print(numeros) # Muestra: [1, 2, 3, 4]
def reasignar_variable(var):
var = 100 # Esto solo cambia la referencia local
x = 5
reasignar_variable(x)
print(x) # Muestra: 5 (no cambió)
Entender este comportamiento es crucial para evitar efectos secundarios inesperados en tus programas.
Mutabilidad e inmutabilidad
Los objetos en Python pueden ser mutables o inmutables:
- Inmutables: No pueden cambiar después de ser creados (enteros, flotantes, cadenas, tuplas)
- Mutables: Pueden modificarse después de ser creados (listas, diccionarios, conjuntos)
Esta distinción afecta cómo se comportan los objetos cuando se pasan a funciones o se utilizan como claves en diccionarios.
# Ejemplo con objeto inmutable (cadena)
texto = "hola"
texto_original = texto
texto = texto + " mundo" # Crea un nuevo objeto, no modifica el original
print(texto) # "hola mundo"
print(texto_original) # "hola"
# Ejemplo con objeto mutable (lista)
lista = [1, 2, 3]
lista_original = lista
lista.append(4) # Modifica el objeto original
print(lista) # [1, 2, 3, 4]
print(lista_original) # [1, 2, 3, 4] - ¡También cambió!
Iteración y generadores
Python está diseñado para trabajar con secuencias de datos de forma natural. El concepto de iteración es fundamental:
- Muchos objetos en Python son iterables (se pueden recorrer elemento por elemento)
- El bucle
for
está diseñado para trabajar con cualquier objeto iterable - Los generadores permiten crear iterables eficientes que calculan valores bajo demanda
# Iteración sobre una lista
for numero in [1, 2, 3]:
print(numero)
# Iteración sobre una cadena
for letra in "Python":
print(letra)
# Generador simple (función que usa 'yield')
def contar_hasta(n):
i = 1
while i <= n:
yield i
i += 1
# Usar el generador
for num in contar_hasta(5):
print(num) # Imprime 1, 2, 3, 4, 5
Los generadores son especialmente útiles para trabajar con grandes conjuntos de datos, ya que no necesitan cargar todo en memoria a la vez.
Manejo de errores con excepciones
Python utiliza excepciones para manejar errores y situaciones excepcionales. Este enfoque permite separar el código normal del código de manejo de errores, haciendo los programas más limpios y robustos.
try:
numero = int(input("Introduce un número: "))
resultado = 10 / numero
print(f"El resultado es {resultado}")
except ValueError:
print("Eso no es un número válido")
except ZeroDivisionError:
print("No puedes dividir por cero")
except:
print("Ocurrió algún otro error")
finally:
print("Esto se ejecuta siempre, haya error o no")
Este sistema de manejo de excepciones es más expresivo y flexible que los enfoques tradicionales basados en códigos de error.
Programación funcional
Aunque Python es un lenguaje multiparadigma, incorpora muchos conceptos de la programación funcional:
- Las funciones son objetos de primera clase (pueden asignarse a variables, pasarse como argumentos, etc.)
- Existen funciones incorporadas como
map()
,filter()
yreduce()
para operaciones funcionales comunes - Las expresiones lambda permiten crear funciones anónimas compactas
# Función como objeto de primera clase
def saludar(nombre):
return f"Hola, {nombre}"
mi_funcion = saludar # Asignar la función a una variable
print(mi_funcion("Ana")) # Llamar a través de la variable
# Uso de map() para aplicar una función a cada elemento
numeros = [1, 2, 3, 4, 5]
cuadrados = list(map(lambda x: x**2, numeros))
print(cuadrados) # [1, 4, 9, 16, 25]
Estos conceptos permiten escribir código más conciso y expresivo en muchas situaciones.
Importación de módulos
Python organiza el código en módulos (archivos) y paquetes (directorios con módulos). El sistema de importación permite reutilizar código de forma organizada:
# Importar un módulo completo
import math
print(math.sqrt(16)) # 4.0
# Importar funciones específicas
from random import randint
print(randint(1, 10)) # Número aleatorio entre 1 y 10
# Importar con alias
import datetime as dt
ahora = dt.datetime.now()
Este sistema modular facilita la organización del código y promueve la reutilización, permitiéndote aprovechar tanto la biblioteca estándar como paquetes de terceros.
Estos fundamentos teóricos forman la base sobre la que se construye todo en Python. A medida que avances en tu aprendizaje, verás cómo estos conceptos se aplican constantemente y te ayudarán a entender el comportamiento del lenguaje en diferentes situaciones.
Otras lecciones de Python
Accede a todas las lecciones de Python y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.
Introducción A Python
Introducción
Instalación Y Creación De Proyecto
Introducción
Tema 2: Tipos De Datos, Variables Y Operadores
Introducción
Instalación De Python
Introducción
Tipos De Datos
Sintaxis
Variables
Sintaxis
Operadores
Sintaxis
Estructuras De Control
Sintaxis
Funciones
Sintaxis
Estructuras Control Iterativo
Sintaxis
Estructuras Control Condicional
Sintaxis
Testing Con Pytest
Sintaxis
Listas
Estructuras De Datos
Tuplas
Estructuras De Datos
Diccionarios
Estructuras De Datos
Conjuntos
Estructuras De Datos
Comprehensions
Estructuras De Datos
Clases Y Objetos
Programación Orientada A Objetos
Excepciones
Programación Orientada A Objetos
Encapsulación
Programación Orientada A Objetos
Herencia
Programación Orientada A Objetos
Polimorfismo
Programación Orientada A Objetos
Mixins Y Herencia Múltiple
Programación Orientada A Objetos
Métodos Especiales (Dunder Methods)
Programación Orientada A Objetos
Composición De Clases
Programación Orientada A Objetos
Funciones Lambda
Programación Funcional
Aplicación Parcial
Programación Funcional
Entrada Y Salida, Manejo De Archivos
Programación Funcional
Decoradores
Programación Funcional
Generadores
Programación Funcional
Paradigma Funcional
Programación Funcional
Composición De Funciones
Programación Funcional
Funciones Orden Superior Map Y Filter
Programación Funcional
Funciones Auxiliares
Programación Funcional
Reducción Y Acumulación
Programación Funcional
Archivos Comprimidos
Entrada Y Salida Io
Entrada Y Salida Avanzada
Entrada Y Salida Io
Archivos Temporales
Entrada Y Salida Io
Contexto With
Entrada Y Salida Io
Módulo Csv
Biblioteca Estándar
Módulo Json
Biblioteca Estándar
Módulo Datetime
Biblioteca Estándar
Módulo Math
Biblioteca Estándar
Módulo Os
Biblioteca Estándar
Módulo Re
Biblioteca Estándar
Módulo Random
Biblioteca Estándar
Módulo Time
Biblioteca Estándar
Módulo Collections
Biblioteca Estándar
Módulo Sys
Biblioteca Estándar
Módulo Statistics
Biblioteca Estándar
Módulo Pickle
Biblioteca Estándar
Módulo Pathlib
Biblioteca Estándar
Importar Módulos Y Paquetes
Paquetes Y Módulos
Crear Módulos Y Paquetes
Paquetes Y Módulos
Entornos Virtuales (Virtualenv, Venv)
Entorno Y Dependencias
Gestión De Dependencias (Pip, Requirements.txt)
Entorno Y Dependencias
Python-dotenv Y Variables De Entorno
Entorno Y Dependencias
Acceso A Datos Con Mysql, Pymongo Y Pandas
Acceso A Bases De Datos
Acceso A Mongodb Con Pymongo
Acceso A Bases De Datos
Acceso A Mysql Con Mysql Connector
Acceso A Bases De Datos
Novedades Python 3.13
Características Modernas
Operador Walrus
Características Modernas
Pattern Matching
Características Modernas
Instalación Beautiful Soup
Web Scraping
Sintaxis General De Beautiful Soup
Web Scraping
Tipos De Selectores
Web Scraping
Web Scraping De Html
Web Scraping
Web Scraping Para Ciencia De Datos
Web Scraping
Autenticación Y Acceso A Recursos Protegidos
Web Scraping
Combinación De Selenium Con Beautiful Soup
Web Scraping
Ejercicios de programación de Python
Evalúa tus conocimientos de esta lección Introducción a Python con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.
Módulo math
Reto herencia
Excepciones
Introducción a Python
Reto variables
Funciones Python
Reto funciones
Módulo datetime
Reto acumulación
Reto estructuras condicionales
Polimorfismo
Módulo os
Reto métodos dunder
Diccionarios
Reto clases y objetos
Reto operadores
Operadores
Estructuras de control
Funciones lambda
Reto diccionarios
Reto función lambda
Encapsulación
Reto coleciones
Reto funciones auxiliares
Crear módulos y paquetes
Módulo datetime
Excepciones
Operadores
Diccionarios
Reto map, filter
Reto tuplas
Proyecto gestor de tareas CRUD
Tuplas
Variables
Tipos de datos
Conjuntos
Reto mixins
Módulo csv
Módulo json
Herencia
Análisis de datos de ventas con Pandas
Reto fechas y tiempo
Reto estructuras de iteración
Funciones
Reto comprehensions
Variables
Reto serialización
Módulo csv
Reto polimorfismo
Polimorfismo
Clases y objetos
Reto encapsulación
Estructuras de control
Importar módulos y paquetes
Módulo math
Funciones lambda
Reto excepciones
Listas
Reto archivos
Encapsulación
Reto conjuntos
Clases y objetos
Instalación de Python y creación de proyecto
Reto listas
Tipos de datos
Crear módulos y paquetes
Tuplas
Herencia
Reto acceso a sistema
Proyecto sintaxis calculadora
Importar módulos y paquetes
Clases y objetos
Módulo os
Listas
Conjuntos
Reto tipos de datos
Reto matemáticas
Módulo json
En esta lección
Objetivos de aprendizaje de esta lección
- Comprender qué es Python y sus principales características.
- Familiarizarse con la sintaxis básica y ejemplos simples de código.
- Conocer el modelo de ejecución y el tipado dinámico en Python.
- Entender conceptos fundamentales como objetos, espacios de nombres, ámbito e indentación.
- Aprender sobre mutabilidad, iteración, manejo de errores, programación funcional e importación de módulos.