0% encontró este documento útil (0 votos)
4 vistas5 páginas

Apuntes Python

El documento cubre los fundamentos de Python, incluyendo funciones, listas, diccionarios, manejo de errores, módulos, programación orientada a objetos, y manejo de ficheros. Se presentan conceptos clave como funciones lambda, list comprehensions, clases, herencia, y decoradores. Además, se explica cómo trabajar con datos en formato JSON y se ofrecen consejos de estudio para practicar la programación en Python.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
4 vistas5 páginas

Apuntes Python

El documento cubre los fundamentos de Python, incluyendo funciones, listas, diccionarios, manejo de errores, módulos, programación orientada a objetos, y manejo de ficheros. Se presentan conceptos clave como funciones lambda, list comprehensions, clases, herencia, y decoradores. Además, se explica cómo trabajar con datos en formato JSON y se ofrecen consejos de estudio para practicar la programación en Python.
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Introducción a la Programación

Tema 4: Fundamentos de Python · Funciones, listas y diccionarios

1. Funciones en Python
Una función es un bloque de código reutilizable que realiza una tarea específica. Se definen con la
palabra clave def:

def saludar(nombre): mensaje = 'Hola, ' + nombre + '!' return mensaje


print(saludar('Ana')) # → Hola, Ana!

1.1 Parámetros por defecto y *args


Los parámetros pueden tener valores por defecto, y se puede aceptar un número variable de
argumentos con *args y **kwargs:

def potencia(base, exponente=2): return base ** exponente potencia(3) # → 9


potencia(3, 3) # → 27

1.2 Funciones lambda


Las lambdas son funciones anónimas de una sola expresión, útiles como argumento de funciones
de orden superior:

cuadrado = lambda x: x ** 2 lista = [1, 2, 3, 4, 5] resultado =


list(map(cuadrado, lista)) # resultado = [1, 4, 9, 16, 25]
2. Listas
Una lista es una colección ordenada y mutable de elementos de cualquier tipo.

2.1 Operaciones básicas


frutas = ['manzana', 'naranja', 'kiwi'] [Link]('mango') # añadir al
final [Link](1, 'pera') # insertar en posición [Link]('kiwi')
# eliminar elemento del frutas[0] # eliminar por índice print(len(frutas)) #
longitud

2.2 List comprehensions


Forma compacta y pythónica de crear listas a partir de iterables:

# Cuadrados de números pares entre 0 y 20 pares_cuad = [x**2 for x in


range(21) if x % 2 == 0] # [0, 4, 16, 36, 64, 100, 144, 196, 256, 324, 400]

3. Diccionarios
Un diccionario almacena pares clave: valor. Las claves deben ser inmutables (strings, números,
tuplas).

alumno = { 'nombre': 'Carlos', 'edad': 21, 'notas': [8.5, 7.0, 9.2] } #


Acceso y modificación print(alumno['nombre']) # → Carlos alumno['edad'] = 22
alumno['carrera'] = 'Física' # nueva clave # Iteración for clave, valor in
[Link](): print(f'{clave}: {valor}')
4. Manejo de errores – try / except
Python usa excepciones para gestionar errores en tiempo de ejecución. El bloque try/except
permite capturarlas y reaccionar de forma controlada:

try: numero = int(input('Introduce un número: ')) resultado = 100 / numero


print(f'Resultado: {resultado}') except ValueError: print('Error: debes
introducir un número entero.') except ZeroDivisionError: print('Error: no se
puede dividir entre cero.') finally: print('Bloque finally: se ejecuta
siempre.')

5. Módulos y paquetes
Python organiza el código en módulos (archivos .py) y paquetes (directorios con __init__.py). Se
importan con import:

import math from random import randint, choice import os


print([Link](144)) # → 12.0 print(randint(1, 10)) # entero aleatorio
entre 1 y 10 print([Link]()) # directorio de trabajo actual

Funciones built-in más usadas

Función Descripción Ejemplo

len(x) Longitud de x len([1,2,3]) → 3

range(n) Secuencia 0..n-1 range(5) → 0,1,2,3,4

type(x) Tipo de x type(3.14) → float

sorted(x) Lista ordenada sorted([3,1,2]) → [1,2,3]

zip(a,b) Combina iterables zip([1,2],[a,b])

enumerate Índice + valor for i,v in enumerate(lst)


6. Programación Orientada a Objetos (POO)
La POO organiza el código en clases que encapsulan datos (atributos) y comportamiento
(métodos). Es el paradigma central de Python.

6.1 Clases e instancias


class Estudiante: # Atributo de clase universidad = 'UCM' def __init__(self,
nombre, edad): # Atributos de instancia [Link] = nombre [Link] =
edad [Link] = [] def agregar_nota(self, nota): [Link](nota)
def promedio(self): return sum([Link]) / len([Link]) if [Link]
else 0 def __str__(self): return f'{[Link]} ({[Link]} años)' # Uso e
= Estudiante('Marta', 20) e.agregar_nota(8.5) e.agregar_nota(9.0) print(e) #
→ Marta (20 años) print([Link]()) # → 8.75

6.2 Herencia
Una clase hija hereda atributos y métodos de la clase padre y puede sobreescribirlos:

class EstudianteDoctorado(Estudiante): def __init__(self, nombre, edad,


tesis): super().__init__(nombre, edad) # llama al padre [Link] = tesis
def __str__(self): return f'{super().__str__()} | Tesis: {[Link]}'

6.3 Métodos especiales (dunder methods)

Método Cuándo se llama

__init__ Al crear una instancia (constructor)

__str__ Al usar str() o print()

__repr__ Representación oficial del objeto

__len__ Al usar len()

__eq__ Al comparar con ==

__add__ Al usar el operador +


7. Ficheros y Persistencia de Datos
Python permite leer y escribir ficheros de texto y binarios con la función built-in open(). Siempre es
recomendable usar el gestor de contexto with para garantizar el cierre del fichero:

# Escritura with open('[Link]', 'w', encoding='utf-8') as f:


[Link]('Alumno: Ana\nNota: 9.5\n') # Lectura línea a línea with
open('[Link]', 'r', encoding='utf-8') as f: for linea in f:
print([Link]()) # Lectura completa en una lista with open('[Link]')
as f: lineas = [Link]() # → lista de strings

7.1 JSON: serialización de datos


El módulo json permite guardar y cargar estructuras de datos Python (dicts, listas):

import json datos = {'nombre': 'Luis', 'notas': [7, 8.5, 9]} # Guardar with
open('[Link]', 'w') as f: [Link](datos, f, indent=4) # Cargar with
open('[Link]') as f: cargado = [Link](f) print(cargado['nombre']) #
→ Luis

8. Decoradores
Un decorador es una función que envuelve a otra función añadiéndole funcionalidad sin modificar
su código. Se aplican con la sintaxis @nombre_decorador:

import time def medir_tiempo(func): def wrapper(*args, **kwargs): inicio =


[Link]() resultado = func(*args, **kwargs) fin = [Link]()
print(f'{func.__name__} tardó {fin-inicio:.4f}s') return resultado return
wrapper @medir_tiempo def calcular_suma(n): return sum(range(n))
calcular_suma(1_000_000) # → calcular_suma tardó 0.0234s

Consejo de estudio: Practica escribiendo una clase completa por tema (Persona, Producto,
CuentaBancaria…). Añade __str__, __eq__ y al menos un método de negocio. Luego guarda
objetos en JSON y recupéralos. Es la mejor forma de afianzar POO y ficheros a la vez.

También podría gustarte