4.2 Tupias

4.2 Tupias

Una tupia es una secuencias ordenadas de objetos de distintos tipos.

Se construyen poniendo los elementos entre corchetes ( ) separados por comas.

Se caracterizan por:

  • Tienen orden.
  • Pueden contener elementos de distintos tipos.
  • Son inmutables, es decir, no pueden alterarse durante la ejecución de un programa.

Se usan habitualmente para representar colecciones de datos una determinada estructura semántica, como por ejemplo un vector o una matriz.

4.2 Tupias

4.2.1 Creación de tupias mediante la función tuple()

Otra forma de crear tuplas es mediante la función tuple().

  • tuple(c) : Crea una tupla con los elementos de la secuencia o colección c.

Se pueden indicar los elementos separados por comas, mediante una cadena, o mediante una colec­ción de elementos iterable.

4.2 Tupias

4.2.2 Operaciones con tuplas

El acceso a los elementos de una tupla se realiza del mismo modo que en las listas. También se pueden obtener subtuplas de la misma manera que las sublistas.

Las operaciones de listas que no modifican la lista también son aplicables a las tuplas.

4.2 Tupias

4.2 Tupias

4.3 Diccionarios

Un diccionario es una colección de pares formados por una clave y un valor asociado a la clave.

Se construyen poniendo los pares entre llaves { } separados por comas, y separando la clave del valor con dos puntos :.

Se caracterizan por:

  • No tienen orden.
  • Pueden contener elementos de distintos tipos.
  • Son mutables, es decir, pueden alterarse durante la ejecución de un programa.
  • Las claves son únicas, es decir, no pueden repetirse en un mismo diccionario, y pueden ser de cualquiertipo de datos inmutable.

4.2 Tupias

4.3.1 Acceso a los elementos de un diccionario
  • d [clave] devuelve el valor del diccionario d asociado a la clave clave. Si en el diccionario no existe esa clave devuelve un error.
  • d.get(clave, valor) devuelve el valor del diccionario d asociado a la clave clave. Si en el diccionario no existe esa clave devuelve valor, y si no se especifica un valor por defecto devuelve None.

4.2 Tupias

4.2 Tupias

4.3.2 Operaciones que no modifican un diccionario
  • len (d) : Devuelve el número de elementos del diccionario d.
  • min (d) : Devuelve la mínima clave del diccionario d siempre que las claves sean comparables.
  • max (d) : Devuelve la máxima clave del diccionario d siempre que las claves sean comparables.
  • sum(d) : Devuelve la suma de las claves del diccionario d, siempre que las claves se puedan sumar.
  • clave in d : Devuelve True si la clave clave pertenece al diccionario d y False encasocon- trario.
  • d.keys() : Devuelve un iterador sobre las claves de un diccionario.
  • d.values() : Devuelve un iterador sobre los valores de un diccionario.
  • d .items() : Devuelve un iterador sobre los pares clave-valor de un diccionario.

4.2 Tupias

4.3.3 Operaciones que modifican un diccionario
  • d[clave] = valor: Añadealdiccionario d elparformadoporlaclave clave yelvalor valor.
  • d .update (d2). Añade los pares del diccionario d2al diccionario d.
  • d.pop(clave, alternativo) : Devuelve del valor asociado a la clave clave del diccionario d y lo elimina del diccionario. Si la clave no está devuelve el valor alternativo.
  • d. popitem() : Devuelve la tupla formada por la clave y el valor del último par añadido al dic­cionario d y lo elimina del diccionario.
  • del d[clave] : Elimina del diccionario d el par con la clave clave.
  • d. clear() : Elimina todos los pares del diccionario d de manera que se queda vacío.

4.2 Tupias

4.3.4 Copia de diccionarios

Existen dos formas de copiar diccionarios:

  • Copia por referencia di = d2:Asocia la la variable di el mismodiccionarioquetieneasociado la variable d2, es decir, ambas variables apuntan a la misma dirección de memoria. Cualquier cambio que hagamos a través de li o 12afectará al mismo diccionario.
  • Copia por valor di = list(d2): Crea una copia del diccionario asociado a d2en una direc­ción de memoria diferente y se la asocia a di. Las variables apuntan a direcciones de memoria diferentes que contienen los mismos datos. Cualquier cambio que hagamos a través de li no afectará al diccionario de l2y viceversa.

4.2 Tupias

4.2 Tupias

5. Funciones
5.1 Funciones (def)

Una función es un bloque de código que tiene asociado un nombre, de manera que cada vez que se quiera ejecutar el bloque de código basta con invocar el nombre de la función.

Para declarar una función se utiliza la siguiente sintaxis:

def <nombre-funcion> (<parámetros>): bloque código return <objeto>

4.2 Tupias

5.1.1 Parámetros y argumentos de una función

Una función puede recibir valores cuando se invoca a través de unas variables conocidas como pará­metros que se definen entre paréntesis en la declaración de la función. En el cuerpo de la función se pueden usar estos parámetros como si fuesen variables.

Los valores que se pasan a la función en una llamada o invocación concreta de ella se conocen como argumentos y se asocian a los parámetros de la declaración de la función.

4.2 Tupias

5.2.1 Paso de argumentos a una función

Los argumentos se pueden pasar de dos formas:

  • Argumentos posicionales: Se asocian a los parámetros de la función en el mismo orden que aparecen en la definición de la función.
  • Argumentos nominales: Se indica explícitamente el nombre del parámetro al que se asocia un argumento de la forma parametro = argumento.

4.2 Tupias

5.1.3 Retorno de una función

Una función puede devolver un objeto de cualquier tipo tras su invocación. Para ello el objeto a devol­ver debe escribirse detrás de la palabra reservada return. Si no se indica ningún objeto, la función no devolverá nada.

4.2 Tupias

5.2 Argumentos por defecto

En la definición de una función se puede asignar a cada parámetro un argumento por defecto, de manera que si se invoca la función sin proporcionar ningún argumento para ese parámetro, se utiliza el argumento por defecto.

4.2 Tupias

5.3 Pasar un número indeterminado de argumentos

Por último, es posible pasar un número variable de argumentos a un parámetro. Esto se puede hacer de dos formas:

  • *parametro: Se antepone un asterisco al nombre del parámetro y en la invocación de la fun­ción se pasa el número variable de argumentos separados por comas. Los argumentos se guar­dan en una lista que se asocia al parámetro.
  • **parametro: Se anteponen dos asteriscos al nombre del parámetro y en la invocación de la función se pasa el número variable de argumentos por pares nombre = valor, separados por comas. Los argumentos se guardan en un diccionario que se asocia al parámetro.

4.2 Tupias

5.4 Ámbito de los parámetros y variables de una función

Los parámetros y las variables declaradas dentro de una función son de ámbito local, mientras que las definidas fuera de ella son de ámbito ámbito global.

Tanto los parámetros como las variables del ámbito local de una función sólo están accesibles du­rante la ejecución de la función, es decir, cuando termina la ejecución de la función estas variables desaparecen y no son accesibles desde fuera de la función.

4.2 Tupias

5.5 Ámbito de los parámetros y variables de una función

Si en el ámbito local de una función existe una variable que también existe en el ámbito global, duran­te la ejecución de la función la variable global queda eclipsada por la variable local y no es accesible hasta que finaliza la ejecución de la función.

4.2 Tupias

5.6 Paso de argumentos por referencia

En Python el paso de argumentos a una función es siempre por referencia, es decir, se pasa una re­ferencia al objeto del argumento, de manera que cualquier cambio que se haga dentro de la función mediante el parámetro asociado afectará al objeto original, siempre y cuando este sea mutable.

4.2 Tupias

5.7 Documentación de funciones

Una práctica muy recomendable cuando se define una función es describir lo que la función hace en un comentario.

En Python esto se hace con un docstring que es un tipo de comentario especial se hace en la línea siguiente al encabezado de la función entre tres comillas simples ‘ ‘ ‘ o dobles

Después se puede acceder a la documentación de la función con la función help(<nombre-funció n>).

4.2 Tupias

5.8 Funciones recursivas

Una función recursiva es una función que en su cuerpo contiene una llama a si misma.

La recursión es una práctica común en la mayoría de los lenguajes de programación ya que permite resolver las tareas recursivas de manera más natural.

Para garantizar el final de una función recursiva, las sucesivas llamadas tienen que reducir el grado de complejidad del problema, hasta que este pueda resolverse directamente sin necesidad de volver a llamara la función.

4.2 Tupias

4.2 Tupias

5.8.1 Funciones recursivas múltiples

Una función recursiva puede invocarse a si misma tantas veces como quiera en su cuerpo.

4.2 Tupias

5.8.2 Los riesgos de la recursión

Aunque la recursión permite resolver las tareas recursivas de forma más natural, hay que tener cuida­do con ella porque suele consumir bastante memoria, ya que cada llamada a la función crea un nuevo ámbito local con las variables y los parámetros de la función.

En muchos casos es más eficiente resolver la tarea recursiva de forma iterativa usando bucles.

4.2 Tupias

Publicaciones Similares