5.9 Programación funcional

5.9 Programación funcional

En Python las funciones son objetos de primera clase, es decir, que pueden pasarse como argumentos de una función, al igual que el resto de los tipos de datos.

5.9 Programación funcional

5.9 Programación funcional

5.9.1 Funciones anónimas (lambda)

Existe un tipo especial de funciones que no tienen nombre asociado y se conocen como funciones anónimas o funciones lambda.

La sintaxis para definir una función anónima es

5.9 Programación funcional

Estas funciones se suelen asociar a una variable o parámetro desde la que hacer la llamada.

5.9 Programación funcional

5.9.2 Aplicar una función a todos los elementos de una colección iterable (map)

map(f, c) : Devuelve una objeto iterable con los resultados de aplicar la función f a los elementos de la colección c. Si la función f requiere n argumentos entonces deben pasarse n colecciones con los argumentos. Para convertir el objeto en una lista, tupla o diccionario hay que aplicar explícitamente las funciones list(), tuple() o dic() respectivamente.

5.9 Programación funcional

5.9.3 Filtrar los elementos de una colección iterable (filter)

filter(f, c) : Devuelve una objeto iterable con los elementos de la colección c que devuelven True al aplicarles la función f. Para convertir el objeto en una lista, tupla o diccionario hay que aplicar explícitamente las funciones list(), tuple() o dic() respectivamente.

f debe ser una función que recibe un argumento y devuelve un valor booleano.

5.9 Programación funcional

5.9.4 Combinar los elementos de varias colecciones iterables (zip)

zip(c1, c2, …) : Devuelve un objeto iterable cuyos elementos son tuplas formadas por los ele­mentos que ocupan la misma posición en las colecciones cl, c2, etc. El número de elementos de las tuplas es el número de colecciones que se pasen. Para convertir el objeto en una lista, tupla o diccio­nario hay que aplicar explícitamente las funciones list(), tuple() o dic() respectivamente.

5.9 Programación funcional

5.9.5 Operar todos los elementos de una colección iterable (reduce)

reduce(f, l) : Aplicar la función f a los dos primeros elementos de la secuencia l. Con el valor obtenido vuelve a aplicar la función f a ese valor y el siguiente de la secuencia, y así hasta que no quedan más elementos en la lista. Devuelve el valor resultado de la última aplicación de la función f.

La función reduce está definida en el módulo functools.

5.9 Programación funcional

5.10 Comprensión de colecciones

En muchas aplicaciones es habitual aplicar una función o realizar una operación con los elementos de una colección (lista, tupla o diccionario) y obtener una nueva colección de elementos transforma­dos. Aunque esto se puede hacer recorriendo la secuencia con un bucle iterativo, y en programación funcional mediante la función map, Python incorpora un mecanismo muy potente que permite esto mismo de manera más simple.

5.10.1 Comprensión de listas

5.9 Programación funcional

Esta instrucción genera la lista cuyos elementos son el resultado de evaluar la expresión expresión, para cada valor que toma la variable variable, donde variable toma todos los valores de la lista lista que cumplen la condición condición.

5.9 Programación funcional

5.10.2 Comprensión de diccionarios

5.9 Programación funcional

Esta instrucción genera el diccionario formado por los pares cuyas claves son el resultado de evaluar la expresión expresión-clave y cuyos valores son el resultado de evaluar la expresión expresion-valor, para cada valor que toma la variable variable, donde variable toma todos los valores de la lista lista que cumplen la condición condición.

5.9 Programación funcional

6. Ficheros

6.1 Ficheros

Hasta ahora hemos visto como interactuar con un programa a través del teclado (entrada de datos) y la terminal (salida), pero en la mayor parte de las aplicaciones reales tendremos que leer y escribir datos en ficheros.

Al utilizar ficheros para guardar los datos estos perdurarán tras la ejecución del programa, pudiendo ser consultados o utilizados más tarde.

Las operaciones más habituales con ficheros son:

  • Crear un fichero.
  • Escribir datos en un fichero.
  • Leer datos de un fichero.
  • Borrar un fichero.
6.1.1 Creación y escritura de ficheros

Para crear un fichero nuevo se utiliza la instrucción

open(ruta, ‘w’) : Crea el fichero con la ruta ruta, lo abre en modo escritura (el argumento ‘w’ significa write) y devuelve un objeto que lo referencia.

Si el fichero indicado por la ruta ya existe en el sistema, se reemplazará por el nuevo.

Una vez creado el fichero, para escribir datos en él se utiliza el método fichero.write(c) : Escribe la cadena c en el fichero referenciado por fichero.

5.9 Programación funcional

6.1.2 Añadir datos a un fichero

Si en lugar de crear un fichero nuevo queremos añadir datos a un fichero existente se debe utilizar la instrucción

open(ruta, ‘a’) : Abre el fichero con la ruta ruta en modo añadir (el argumento ‘a’ significa ap- pend) y devuelve un objeto que lo referencia.

Una vez abierto el fichero, se utiliza el método de escritura anterior y los datos se añaden al final del fichero.

5.9 Programación funcional

6.1.3 Leer datos de un fichero

Para abrir un fichero en modo lectura se utiliza la instrucción

open(ruta, ‘r’) : Abre el fichero con la ruta ruta en modo lectura (el argumento ‘r’ significa read) y devuelve un objeto que lo referencia.

Una vez abierto el fichero, se puede leer todo el contenido del fichero o se puede leer línea a línea.

6.1.4 Leer datos de un fichero

fichero. read() : Devuelve todos los datos contenidos en fichero como una cadena de caracte­res.

fichero. readlines() : Devuelve una lista de cadenas de caracteres donde cada cadena es una linea del fichero referenciado por fichero.

5.9 Programación funcional

6.1.5 Cerrar un fichero

Para cerrar un fichero se utiliza el método

fichero.close() : Cierra el fichero referenciado por el objeto fichero.

Cuando se termina de trabajar con un fichero conviene cerrarlo, sobre todo si se abre en modo escri­tura, ya que mientras está abierto en este modo no se puede abrir por otra aplicación. Si no se cierra explícitamente un fichero, Python intentará cerrarlo cuando estime que ya no se va a usar más.

5.9 Programación funcional

5.9 Programación funcional

6.1.6 Renombrado y borrado de un fichero

Para renombra o borrar un fichero se utilizan funciones del módulo os.

os. rename (rutal, ruta2) : Renombra y mueve el fichero de la ruta rutal a la ruta ruta2.

os. remove (ruta) : Borra el fichero de la ruta ruta.

Antes de borrar o renombra un directorio conviene comprobar que existe para que no se produzca un error. Para ello se utiliza la función

os. path .isfile(ruta) : Devuelve True si existe un fichero en la ruta ruta y False en caso con­trario.

6.1.7 Renombrado y borrado de un fichero o directorio

5.9 Programación funcional

6.1.8 Creación, cambio y eliminación de directorios

Para trabajar con directorios también se utilizan funciones del módulo os.

os.listdir(ruta) : Devuelve una lista con los ficheros y directiorios contenidos en la ruta ruta.

os.mkdir(ruta) : Crea un nuevo directorio en la ruta ruta.

os.chdir(ruta) : Cambia el directorio actual al indicado por la ruta ruta.

os.getcwd() : Devuelve una cadena con la ruta del directorio actual.

os.rmdir(ruta) : Borra el directorio de la ruta ruta, siempre y cuando esté vacío.

6.1.9 Leer un fichero de internet

Para leer un fichero de internet hay que utilizar la función urlopen del módulo urllib. request.

urlopen(url) : Abre el fichero con la url especificada y devuelve un objeto del tipo fichero al que se puede acceder con los métodos de lectura de ficheros anteriores.

5.9 Programación funcional

Publicaciones Similares