Biblioteca Online : ¡La Suscripción ENI por 9,90 € el primer mes!, con el código PRIMER9. Pulse aquí
¡Acceso ilimitado 24/7 a todos nuestros libros y vídeos! Descubra la Biblioteca Online ENI. Pulse aquí
  1. Libros
  2. Python 3
  3. Funciones y módulos
Extrait - Python 3 Los fundamentos del lenguaje (4ª edición)
Extractos del libro
Python 3 Los fundamentos del lenguaje (4ª edición) Volver a la página de compra del libro

Funciones y módulos

Las funciones

1. ¿Por qué utilizar funciones?

Cuando se desarrolla, se utilizan muchas funciones, como por ejemplo print o input que hemos visto en el capítulo anterior. Estas últimas son bastante simples de manipular por varios motivos:

  • poseen un nombre sencillo que indica con claridad para qué sirven;

  • reciben parámetros que permiten variar la manera en la que se utilizan;

  • no necesitamos saber cómo están escritas, simplemente qué van a hacer.

Cuando escriba su propio código, debe diseñar algoritmos más o menos complejos, y cuando no está organizado, puede producir lo que hemos hecho hasta el momento: un código perfectamente lineal.

El principal inconveniente es el siguiente: un código de este tipo es una larga prosa, sin descansos particulares. Es difícil aislar una parte y saber qué línea se invoca y en cada momento. Habitualmente, consideramos que una función bien hecha debe tener unas diez líneas de media, y 20 o 25 como máximo.

Estas métricas no son, realmente, obligaciones, sino un orden de magnitud para tener en mente e intentar respetar y obtener así un código legible y comprensible por todos, incluido usted algunos meses más tarde, pues lo que ha escrito solo lo tendrá fresco en el momento de su escritura.

En efecto, un código demasiado largo es difícil de leer, de aprender y de mantener.

La realidad es clara, hay que organizar el propio código para que esté formado por pequeños bloques simples y fáciles de identificar. La verdadera dificultad es saber cómo delimitar estos bloques, cómo construir bellas funciones que sean lo suficientemente precisas como para hacer lo que deseamos con detalle, pero también lo suficientemente genéricas como para no tener que construir dos funciones que sean casi idénticas y que solo se distingan por un pequeño detalle.

Un buen punto para comenzar consiste en mirar el código producido hasta el momento (la solución al ejercicio del final del capítulo anterior) e identificar duplicados en el código:

print("Introduzca el número a adivinar") 
while True: 
    numero = input("Introduzca un número entre 0 y 99: ") 
    try: 
        numero...

Los módulos

1. Introducción

a. ¿Qué es un módulo?

Un módulo es una colección de funciones, clases, constantes y otras variables. Hay que ver los módulos como los estantes de una librería. Estos se utilizan para clasificar el código que escribe de una manera organizada.

Esta organización, por el contrario, se deja a su parecer: cada uno es libre de proceder como mejor considere. Obviamente, existen recomendaciones, en particular cuando utiliza proyectos que requieren una arquitectura sólida, como Django, pero una vez más, es usted quien decide.

Conviene saber que cualquier módulo puede ser un punto de entrada potencial. De este modo, si no hay más que constantes, clases y funciones, este módulo no hará gran cosa: se cargará y el programa terminará en algún momento. Este tipo de módulo está en realidad destinado a importarse desde algún otro módulo.

Por el contrario, si hay llamadas a funciones, entonces se verá el resultado de estas llamadas. Sea cual sea, es importante identificar el módulo que es el punto de entrada de la aplicación. Retomaremos este tema más adelante.

b. ¿Cómo crear un módulo en Python?

En Python, un módulo es simplemente un archivo con la extensión .py.

Podemos crear un paquete (o package en inglés), que no es más que una arborescencia de módulos. Una carpeta puede ser un módulo de Python siempre que exista un archivo __init__.py en su interior, incluso aunque esté vacío. El contenido de este archivo será el contenido del propio módulo.

Además, los demás módulos presentes en el interior de esta carpeta, ya se trate de archivos o de otras carpetas, serán sus submódulos, bajo las mismas condiciones.

c. Organizar el código

La organización del código es uno de los elementos más...

Terminar el juego

Para terminar este tutorial, proponemos realizar varios ejercicios.

Hemos definido aquí lo esencial de los bloques que permiten crear un juego que consiste en adivinar un número. Proponemos partir de la última versión del juego (20_Modulo_2) y trabajar en varios aspectos para ir más allá.

1. Crear niveles

El primer cambio consiste en crear un menú que permita seleccionar un nivel de dificultad vinculado a una preselección de los límites del juego: nivel simple (entre 0 y 100), nivel intermedio (entre 0 y 1.000), nivel avanzado (entre 0 y 1.000.000) y nivel experto (entre 0 y 1.000.000.000.000).

El jugador podrá escoger de manera sencilla su nivel, por ejemplo entre 1 y 4, y los valores mínimo y máximo se determinarán automáticamente.

De manera opcional puede, sea cual sea el nivel, proponer al jugador una ayuda (mostrar el número mínimo y máximo deducidos de las anteriores entradas) o rechazarla.

Puede crear una función para gestionar este menú, que incluirá en un nuevo módulo entrada.menu. También debe crear nuevas funciones en el módulo juego y revisar la función jugar.

2. Determinar un número máximo de intentos

También es posible contar el número de intentos (si es preciso, mostrarlo) y terminar la partida si se alcanza un valor máximo (que será libre...