CAPÍTULO 6 Modularidad

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 que se encuentre dividido el sistema recibe el nombre de módulo. Idealmente un módulo debe poder cumplir las condiciones de caja negra, es decir, ser independiente del resto de los módulos y comunicarse con ellos (con todos o sólo con una parte) a través de entradas y salidas bien definidas.

En este capítulo veremos las facilidades que nos proporciona Python para trabajar en la línea de modularidad del código.

6.1 Funciones

CAPÍTULO 6 Modularidad

El concepto de función es básico en prácticamente cualquier lenguaje de programación. Se trata de una estructura que nos permite agrupar código. Persigue dos objetivos claros:

  1. No repetir trozos de código durante nuestro programa.
  2. Reutilizar el código para distintas situaciones.

Una función viene definida por su nombre, sus parámetros y su valor de retorno. Esta parametrización de las funciones las convierte en una poderosa herramienta ajustable a las circunstancias que tengamos. Al invocarla estaremos solicitando su ejecución y obtendremos unos resultados.

6.1.1 Definir una función

Para definir una función utilizamos la palabra reservada def seguida del nombre de la función. A continuación aparecerán 0 o más parámetros separados por comas (entre paréntesis), finalizando la línea con dos puntos : En la siguiente línea empezaría el cuerpo de la función que puede contener 1 o más sentencias, incluyendo (o no) una sentencia de retorno con el resultado mediante return.

CAPÍTULO 6 Modularidad

Figura 1: Definición de una función en Python

CAPÍTULO 6 Modularidad
Hagamos una primera función sencilla que no recibe parámetros:

CAPÍTULO 6 Modularidad

  • Nótese la indentación (sangrado) del cuerpo de la función.
  • Los nombres de las funciones siguen las mismas reglas que las variables.

Invocar una función

Para invocar (o «llamar») a una función sólo tendremos que escribir su nombre seguido de paréntesis. En el caso de la función sencilla (vista anteriormente) se haría así:

CAPÍTULO 6 Modularidad

Como era de esperar, al invocar a esta función obtenemos un mensaje por pantalla, fruto de la ejecución del cuerpo de la función.

Retornar un valor

Las funciones pueden retornar (o «devolver») un valor. Veamos un ejemplo muy sencillo:

CAPÍTULO 6 Modularidad

Importante: No confundir return con print(). El valor de retorno de una función nos permite usarlo fuera de su contexto. El hecho de añadir print() al cuerpo de una función es algo «coyuntural» y no modifica el resultado de la lógica interna.

Nota: En la sentencia return podemos incluir variables y expresiones, no únicamente literales.

Pero no sólo podemos invocar a la función directamente, también la podemos integrar en otras expresiones. Por ejemplo en condicionales:

CAPÍTULO 6 Modularidad

Si una función no incluye un return de forma explícita, devolverá None de forma implícita:

CAPÍTULO 6 Modularidad

6.1.2 Veracidad

Nivel intermedio

Ya hemos hablado ligeramente sobre la comprobación de veracidad en Python.

Vamos a crear una función propia para comprobar la veracidad de distintos objetos del lenguaje, y así hacernos una mejor idea de qué cosas son evaluadas a verdadero y cuáles a falso:

CAPÍTULO 6 Modularidad

Evaluando a False

Veamos qué «cosas» son evaluadas a False en Python:

CAPÍTULO 6 Modularidad

CAPÍTULO 6 Modularidad

Importante: El resto de objetos son evaluados a True en Python.

Evaluando a True

Veamos ciertos ejemplos que son evaluados a True en Python:

CAPÍTULO 6 Modularidad

Publicaciones Similares