Python

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:

  1. El intérprete lee el código fuente
  2. Lo convierte a un formato intermedio llamado bytecode
  3. 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:

  1. Local (local): Dentro de la función actual
  2. Enclosing (envolvente): En funciones exteriores
  3. Global (global): En el nivel superior del módulo
  4. 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() y reduce() 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.

Aprende Python online

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

Python

Introducción

Instalación Y Creación De Proyecto

Python

Introducción

Tema 2: Tipos De Datos, Variables Y Operadores

Python

Introducción

Instalación De Python

Python

Introducción

Tipos De Datos

Python

Sintaxis

Variables

Python

Sintaxis

Operadores

Python

Sintaxis

Estructuras De Control

Python

Sintaxis

Funciones

Python

Sintaxis

Estructuras Control Iterativo

Python

Sintaxis

Estructuras Control Condicional

Python

Sintaxis

Testing Con Pytest

Python

Sintaxis

Listas

Python

Estructuras De Datos

Tuplas

Python

Estructuras De Datos

Diccionarios

Python

Estructuras De Datos

Conjuntos

Python

Estructuras De Datos

Comprehensions

Python

Estructuras De Datos

Clases Y Objetos

Python

Programación Orientada A Objetos

Excepciones

Python

Programación Orientada A Objetos

Encapsulación

Python

Programación Orientada A Objetos

Herencia

Python

Programación Orientada A Objetos

Polimorfismo

Python

Programación Orientada A Objetos

Mixins Y Herencia Múltiple

Python

Programación Orientada A Objetos

Métodos Especiales (Dunder Methods)

Python

Programación Orientada A Objetos

Composición De Clases

Python

Programación Orientada A Objetos

Funciones Lambda

Python

Programación Funcional

Aplicación Parcial

Python

Programación Funcional

Entrada Y Salida, Manejo De Archivos

Python

Programación Funcional

Decoradores

Python

Programación Funcional

Generadores

Python

Programación Funcional

Paradigma Funcional

Python

Programación Funcional

Composición De Funciones

Python

Programación Funcional

Funciones Orden Superior Map Y Filter

Python

Programación Funcional

Funciones Auxiliares

Python

Programación Funcional

Reducción Y Acumulación

Python

Programación Funcional

Archivos Comprimidos

Python

Entrada Y Salida Io

Entrada Y Salida Avanzada

Python

Entrada Y Salida Io

Archivos Temporales

Python

Entrada Y Salida Io

Contexto With

Python

Entrada Y Salida Io

Módulo Csv

Python

Biblioteca Estándar

Módulo Json

Python

Biblioteca Estándar

Módulo Datetime

Python

Biblioteca Estándar

Módulo Math

Python

Biblioteca Estándar

Módulo Os

Python

Biblioteca Estándar

Módulo Re

Python

Biblioteca Estándar

Módulo Random

Python

Biblioteca Estándar

Módulo Time

Python

Biblioteca Estándar

Módulo Collections

Python

Biblioteca Estándar

Módulo Sys

Python

Biblioteca Estándar

Módulo Statistics

Python

Biblioteca Estándar

Módulo Pickle

Python

Biblioteca Estándar

Módulo Pathlib

Python

Biblioteca Estándar

Importar Módulos Y Paquetes

Python

Paquetes Y Módulos

Crear Módulos Y Paquetes

Python

Paquetes Y Módulos

Entornos Virtuales (Virtualenv, Venv)

Python

Entorno Y Dependencias

Gestión De Dependencias (Pip, Requirements.txt)

Python

Entorno Y Dependencias

Python-dotenv Y Variables De Entorno

Python

Entorno Y Dependencias

Acceso A Datos Con Mysql, Pymongo Y Pandas

Python

Acceso A Bases De Datos

Acceso A Mongodb Con Pymongo

Python

Acceso A Bases De Datos

Acceso A Mysql Con Mysql Connector

Python

Acceso A Bases De Datos

Novedades Python 3.13

Python

Características Modernas

Operador Walrus

Python

Características Modernas

Pattern Matching

Python

Características Modernas

Instalación Beautiful Soup

Python

Web Scraping

Sintaxis General De Beautiful Soup

Python

Web Scraping

Tipos De Selectores

Python

Web Scraping

Web Scraping De Html

Python

Web Scraping

Web Scraping Para Ciencia De Datos

Python

Web Scraping

Autenticación Y Acceso A Recursos Protegidos

Python

Web Scraping

Combinación De Selenium Con Beautiful Soup

Python

Web Scraping

Accede GRATIS a Python y certifícate

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

Python
Puzzle

Reto herencia

Python
Código

Excepciones

Python
Test

Introducción a Python

Python
Test

Reto variables

Python
Código

Funciones Python

Python
Puzzle

Reto funciones

Python
Código

Módulo datetime

Python
Test

Reto acumulación

Python
Código

Reto estructuras condicionales

Python
Código

Polimorfismo

Python
Test

Módulo os

Python
Test

Reto métodos dunder

Python
Código

Diccionarios

Python
Puzzle

Reto clases y objetos

Python
Código

Reto operadores

Python
Código

Operadores

Python
Test

Estructuras de control

Python
Puzzle

Funciones lambda

Python
Test

Reto diccionarios

Python
Código

Reto función lambda

Python
Código

Encapsulación

Python
Puzzle

Reto coleciones

Python
Proyecto

Reto funciones auxiliares

Python
Código

Crear módulos y paquetes

Python
Puzzle

Módulo datetime

Python
Puzzle

Excepciones

Python
Puzzle

Operadores

Python
Puzzle

Diccionarios

Python
Test

Reto map, filter

Python
Código

Reto tuplas

Python
Código

Proyecto gestor de tareas CRUD

Python
Proyecto

Tuplas

Python
Puzzle

Variables

Python
Puzzle

Tipos de datos

Python
Puzzle

Conjuntos

Python
Test

Reto mixins

Python
Código

Módulo csv

Python
Test

Módulo json

Python
Test

Herencia

Python
Test

Análisis de datos de ventas con Pandas

Python
Proyecto

Reto fechas y tiempo

Python
Proyecto

Reto estructuras de iteración

Python
Código

Funciones

Python
Test

Reto comprehensions

Python
Código

Variables

Python
Test

Reto serialización

Python
Proyecto

Módulo csv

Python
Puzzle

Reto polimorfismo

Python
Código

Polimorfismo

Python
Puzzle

Clases y objetos

Python
Código

Reto encapsulación

Python
Código

Estructuras de control

Python
Test

Importar módulos y paquetes

Python
Test

Módulo math

Python
Test

Funciones lambda

Python
Puzzle

Reto excepciones

Python
Código

Listas

Python
Puzzle

Reto archivos

Python
Proyecto

Encapsulación

Python
Test

Reto conjuntos

Python
Código

Clases y objetos

Python
Test

Instalación de Python y creación de proyecto

Python
Test

Reto listas

Python
Código

Tipos de datos

Python
Test

Crear módulos y paquetes

Python
Test

Tuplas

Python
Test

Herencia

Python
Puzzle

Reto acceso a sistema

Python
Proyecto

Proyecto sintaxis calculadora

Python
Proyecto

Importar módulos y paquetes

Python
Puzzle

Clases y objetos

Python
Puzzle

Módulo os

Python
Puzzle

Listas

Python
Test

Conjuntos

Python
Puzzle

Reto tipos de datos

Python
Código

Reto matemáticas

Python
Proyecto

Módulo json

Python
Puzzle

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.