Guía Completa de Python: Desde Conceptos Básicos hasta Ejemplos Prácticos

  1. ¿Qué es Python?

Python fue creado por Guido van Rossum en 1989 y lanzado por primera vez en 1991. Su diseño proiriza la legibilidad del código, permitiendo expresar conceptos complejos en pocas líneas. Es un lenguaje interpretado, dinámico y multiparadigma. La versión estable actual es Python 3.13.5 (a julio de 2025). Python 2 dejó de recibir soporte en 2020, por lo que todo desarrollo nuevo debe usar Python 3.

  1. Instalación en Windows

Descarga el instalador desde python.org. Asegúrate de marcar la opción "Add Python to PATH" durante la instalación. Verifica con estos comandos en la terminal:

C:\Users\Z.D
python --version   # Python 3.13.5
pip --version     # pip 23.x

Para desinstalar: ve a "Programas y características" en el Panel de control, busca "Python 3.13" y haz clic en "Desinstalar".

  1. Instalación en Linux (CentOS/RHEL)

# Instalar dependencias
yum install wget zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make zlib zlib-devel libffi-devel -y

# Descargar e instalar
wget https://www.python.org/ftp/python/3.13.5/Python-3.13.5.tgz
tar -xvf Python-3.13.5.tgz
cd Python-3.13.5
./configure --prefix=/usr/local/python313
make && make install

# Reemplazar la versión antigua
rm -rf /usr/bin/python
ln -s /usr/local/python313/bin/python3.13 /usr/bin/python
# Ajustar yum (si es necesario)
vi /usr/libexec/urlgrabber-ext-down  # cambiar #!/usr/bin/python por #!/usr/bin/python2
vi /usr/bin/yum                      # misma modificación

Verificación:

[root@localhost ~]# python
Python 3.13.5 (main, Jul 29 2025, 22:31:27) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>

  1. Gestor de paquetes pip

pip es el gestor de paquetes estándar de Python. Se puede usar para instalar, actualizar y eliminar bibliotecas de terceros.

Comando Descripción
pip install requests Instalar última versión
pip install pydantic==2.12.5 Instalar versión específica
pip list Listar paquetes instalados
pip freeze > requirements.txt Exportar dependencias
pip install -r requirements.txt Instalar desde archivo

Para acelerar las descargas, configura un espejo (mirror):

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/
pip config set install.trusted-host mirrors.aliyun.com

  1. Conceptos fundamentales

5.1 Variables y literales

Una variable es un contenedor con nombre que almacena un valor. En Python no es necesario declarar el tipo de antemano.

# Literales
print(100)          # entero
print(3.1416)       # flotante
print(True)         # booleano
print("Hola Python") # cadena
print(None)         # valor nulo

# Variables (tipado dinámico)
x = 10          # entero
x = 3.14        # ahora es flotante
x = "texto"     # ahora es cadena
x = True        # ahora es booleano

# Asignación múltiple
a, b = 5, 20
# Intercambio de valores
a, b = b, a
print(a, b)     # 20 5

5.2 Tipos de datos principales

Tipo Ejemplo Descripción
int 10, -5, 0 Números enteros
float 3.14, 1.2e3 Números decimales
str "hola", 'mundo' Cadena de caracteres
bool True, False Valores lógicos
list [1,2,3] Lista mutable y ordenada
tuple (1,2,3) Tupla inmutable y ordenada
set {1,2,3} Conjunto sin orden ni repetición
dict {"clave": "valor"} Diccionario (pares clave-valor)

Para conocer el tipo de una variable: type(variable).

5.3 Operadores

Categoría Operadores
Aritméticos + - * / // % **
Asignación = += -= *= /= //= %= **=
Comparación == != < > <= >=
Lógicos and or not
# Ejemplos
print(10 + 5)    # 15
print(10 / 3)    # 3.333...
print(10 // 3)   # 3 (división entera)
print(10 % 3)    # 1 (módulo)
print(2 ** 3)    # 8 (potencia)

a = 10
a += 5  # a = 15
print(a, a == 15, a > 5 and a < 20)  # 15 True True

5.4 Control de flujo

Condicionales if-elif-else

nota = 75
if nota >= 90:
    print("Excelente")
elif nota >= 70:
    print("Bien")
else:
    print("Necesita mejorar")

Bucle while

contador = 0
while contador < 5:
    print(contador)
    contador += 1

Bucle for

for i in range(6):
    print(i)  # 0 1 2 3 4 5

palabra = "Python"
for letra in palabra:
    print(letra)

break y continue

for num in range(1, 11):
    if num == 5:
        break    # sale del bucle
    print(num)   # 1 2 3 4

for num in range(1, 11):
    if num % 2 == 0:
        continue # salta pares
    print(num)   # 1 3 5 7 9

  1. Estructuras de datos principales

6.1 Listas

frutas = ["manzana", "plátano", "cereza"]
print(frutas[0])          # manzana
frutas.append("naranja")  # agrega al final
frutas.insert(1, "kiwi")  # inserta en índice 1
frutas.remove("plátano")  # elimina por valor
fruta_eliminada = frutas.pop()  # elimina último y lo devuelve
print(frutas)             # ['manzana', 'kiwi', 'cereza']
print(len(frutas))        # 3

# Comprensión de listas
cuadrados = [x**2 for x in range(1, 11)]
print(cuadrados)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

6.2 Tuplas

punto = (3, 4)
x, y = punto            # desempaquetado
print(x, y)             # 3 4
# punto[0] = 5          # error: las tuplas son inmutables

6.3 Conjuntos (set)

a = {1, 2, 3, 3}
print(a)               # {1, 2, 3} (elimina duplicados)
a.add(4)
b = {3, 4, 5}
print(a & b)           # {3, 4} intersección
print(a | b)           # {1, 2, 3, 4, 5} unión
print(a - b)           # {1, 2} diferencia

6.4 Diccionarios

persona = {"nombre": "Ana", "edad": 30, "ciudad": "Madrid"}
print(persona["nombre"])      # Ana
persona["profesion"] = "Ingeniera"  # agregar
print(persona.get("edad"))    # 30
persona["edad"] = 31          # modificar
del persona["ciudad"]         # eliminar
print(persona.keys())         # dict_keys(['nombre', 'edad', 'profesion'])
print(persona.values())       # dict_values(['Ana', 31, 'Ingeniera'])
for clave, valor in persona.items():
    print(f"{clave}: {valor}")

  1. Funciones

def saludar(nombre, saludo="Hola"):
    """Retorna un saludo personalizado."""
    return f"{saludo}, {nombre}!"

# Llamadas
print(saludar("Carlos"))              # Hola, Carlos!
print(saludar("María", "Buenos días")) # Buenos días, María!

# Argumentos variables
def sumar_todos(*numeros):
    return sum(numeros)

print(sumar_todos(1, 2, 3, 4, 5))    # 15

# Argumentos clave variables
def mostrar_info(**datos):
    for clave, valor in datos.items():
        print(f"{clave}: {valor}")

mostrar_info(nombre="Luis", edad=25, pais="Chile")

# Función lambda
doble = lambda x: x * 2
print(doble(5))                      # 10

# Ordenar lista con lambda
alumnos = [("Ana", 88), ("Luis", 95), ("Pedro", 72)]
alumnos.sort(key=lambda alumno: alumno[1])
print(alumnos)  # [('Pedro', 72), ('Ana', 88), ('Luis', 95)]

  1. Módulos y paquetes

Un módulo es un archivo .py que contiene funciones, clases y variables. Un paquete es una carpeta con un archivo __init__.py.

# Importar un módulo completo
import math
print(math.sqrt(25))  # 5.0

# Importar con alias
import random as rnd
print(rnd.randint(1, 10))

# Importar solo una función
from datetime import datetime
ahora = datetime.now()
print(ahora)

# Crear un módulo personalizado (archivo "utilidades.py")
# def suma(a, b):
#     return a + b

# En otro archivo:
# import utilidades
# print(utilidades.suma(3, 4))

  1. Programación orientada a objetos

class Perro:
    # Variable de clase (compartida)
    especie = "Canino"

    def __init__(self, nombre, edad):
        self.nombre = nombre    # variable de instancia
        self.edad = edad

    def ladrar(self):
        return f"{self.nombre} dice: ¡Guau!"

    # Método especial para representación en cadena
    def __str__(self):
        return f"Perro(nombre={self.nombre}, edad={self.edad})"

# Crear objetos
perro1 = Perro("Rex", 3)
perro2 = Perro("Luna", 2)

print(perro1.ladrar())          # Rex dice: ¡Guau!
print(perro1.especie)           # Canino
print(perro2)                   # Perro(nombre=Luna, edad=2)

# Herencia
class PerroGuia(Perro):
    def __init__(self, nombre, edad, dueno):
        super().__init__(nombre, edad)
        self.dueno = dueno

    def trabajar(self):
        return f"{self.nombre} guía a {self.dueno}."

guia = PerroGuia("Max", 5, "Carlos")
print(guia.trabajar())          # Max guía a Carlos.

  1. Manejo de excepciones

def dividir(a, b):
    try:
        resultado = a / b
    except ZeroDivisionError as e:
        print(f"Error: {e}")
        return None
    except TypeError as e:
        print(f"Error de tipo: {e}")
        return None
    else:
        print("División exitosa")
        return resultado
    finally:
        print("Bloque finally siempre se ejecuta")

print(dividir(10, 2))  # 5.0
print(dividir(10, 0))  # None (con mensaje de error)

  1. Archivos y JSON

import json

# Escribir JSON
datos = {"nombre": "Pedro", "edad": 28, "hobbies": ["leer", "correr"]}
with open("datos.json", "w", encoding="utf-8") as f:
    json.dump(datos, f, ensure_ascii=False, indent=4)

# Leer JSON
with open("datos.json", "r", encoding="utf-8") as f:
    datos_cargados = json.load(f)
print(datos_cargados["nombre"])  # Pedro

# Leer archivo de texto
with open("ejemplo.txt", "w") as f:
    f.write("Hola mundo")
with open("ejemplo.txt", "r") as f:
    contenido = f.read()
print(contenido)  # Hola mundo

  1. Módulos estándar útiles

Módulo Función
os Operaciones del sistema operativo (archivos, directorios)
sys Interacción con el intérprete (argv, path, exit)
collections Estructuras de datos avanzadas (defaultdict, Counter, deque)
datetime Manejo de fechas y horas
json Codificación y decodificación JSON
logging Sistema de registro de logs
re Expresiones regulares
import os
print(os.getcwd())                # directorio actual
print(os.listdir('.'))            # contenido del directorio

from collections import Counter
contador = Counter("paralelepipedo")
print(contador.most_common(3))    # [('p', 3), ('e', 3), ('l', 2)]

Etiquetas: Python Guido van Rossum pip tipo de datos lista

Publicado el 6-3 02:55