Generadores

Un generador es un objeto que nos permite iterar sobre una secuencia de valores con la particularidad de no tener que crear explícitamente dicha secuencia. Esta propiedad los hace idóneos para situaciones en las que el tamaño de las secuencias podría tener un impacto negativo en el consumo de memoria. De hecho ya hemos visto…

6.1.4 Documentación

Ya hemos visto que en Python podemos incluir comentarios para explicar mejor determinadas zonas de nuestro código. Del mismo modo podemos (y en muchos casos debemos) adjuntar documentación a la definición de una función incluyendo una cadena de texto (docstring) al comienzo de su cuerpo: La forma más ortodoxa de escribir un docstring es utilizando…

6.1.3 Parámetros y argumentos

Si una función no dispusiera de valores de entrada estaría muy limitada en su actuación. Es por ello que los parámetros nos permiten variar los datos que consume una función para obtener distintos resultados. Vamos a empezar a crear funciones que reciben parámetros. En este caso escribiremos una función que recibe un valor numérico y…

CAPÍTULO 6 Modularidad

La modularidad es la característica de un sistema que permite que sea estudiado, visto o entendido como la unión de varias partes que interactúan entre sí y que trabajan solidariamente para alcanzar un objetivo común, realizando cada una de ellas una tarea necesaria para la consecución de dicho objetivo. Cada una de esas partes en…

5.5 Ficheros

Aunque los ficheros encajarían más en un apartado de «entrada/salida» ya que representan un medio de almacenamiento persistente, también podrían ser vistos como estructuras de datos, puesto que nos permiten guardar la información y asignarles un cierto formato.[1] Un fichero es un conjunto de bytes almacenados en algún dispositivo. El sistema de ficheros es la…

5.1.4 Cuidado con las copias

Nivel intermedio Las listas son estructuras de datos mutables y esta característica nos obliga a tener cuidado cuando realizamos copias de listas, ya que la modificación de una de ellas puede afectar a la otra. Veamos un ejemplo sencillo: Ejecución paso a paso a través de Python Tutor: https://cutt.ly/pfi5PC5 Una posible solución a este problema…

5.2 Tuplas

El concepto de tupia es muy similar al de lista. Aunque hay algunas diferencias menores, lo fundamental es que, mientras una lista es mutable y se puede modificar, una tupia no admite cambios y por lo tanto, es inmutable. Podemos pensar en crear tupias tal y como lo hacíamos con listas, pero usando paréntesis en…

5.3 Diccionarios

Podemos trasladar el concepto de diccionario de la vida real al de diccionario en Python. Al fin y al cabo un diccionario es un objeto que contiene palabras, y cada palabra tiene asociado un significado. Haciendo el paralelismo, diríamos que en Python un diccionario es también un objeto indexado por claves (las palabras) que tienen…

Modificar con troceado

No sólo es posible modificar un elemento de cada vez, sino que podemos asignar valores a trozos de una lista: Borrar elementos Python nos ofrece, al menos, cuatro formas para borrar elementos en una lista: Por su índice: Mediante la función del(): Por su valor: Mediante la función remove(): Por su índice (con extracción): Las…

4.2.2 La sentencia for

Python permite recorrer aquellos tipos de datos que sean iterables, es decir, que admitan iterar sobre ellos. Algunos ejemplos de tipos y estructuras de datos que permiten ser iteradas (recorridas) son: cadenas de texto, listas, diccionarios, ficheros, etc. La sentencia for nos permite realizar esta acción. A continuación se plantea un ejemplo en el que vamos…

4.2 Bucles

Cuando queremos hacer algo más de una vez, necesitamos recurrir a un bucle. En esta sección veremos las distintas sentencias en Python que nos permiten repetir un bloque de código. El primer mecanismo que existe en Python para repetir instrucciones es usar la sentencia while. La semántica tras esta sentencia es: «Mientras se cumpla la…

4.1.7 Sentencia match-case

Una de las novedades más esperadas (y quizás controvertidas) de Python 3.10 fue el llamado Structural Pattern Matching que introdujo en el lenguaje una nueva sentencia condicional. Ésta se podría asemejar a la sentencia «switch» que ya existe en otros lenguajes de programación. Comparando valores En su versión más simple, el «pattern matching» permite comparar…