En el capítulo anterior nos aproximamos al mundo de las funciones y comenzamos por el ejemplo más básico: una función sin argumentos que se limitaba a ejecutar un conjunto de instrucciones.
En el artículo de hoy aprenderemos a facilitar argumentos, que serán utilizados como variables dentro del cuerpo de la función.
Vayamos con el primer ejemplo básico. Arranca el intérprete interactivo y prepárate a introducir algo de código. Me gusta el intérprete interactivo para ilustrar los conceptos simples, sin necesidad de desarrollar un programa completo. Esa es la metodología de esta serie de artículos: los conceptos se explican en el contexto más simple posible. Esa «molecularidad» de la información facilita el aprendizaje. En capítulos posteriores trabajaremos con programas completos y algoritmos que requerirán el despliegue de muchas de estas piezas que ahora aprendemos de forma individual.
Introduce en el intérprete interactivo las dos líneas siguientes:
>>> def megustapython(veces):
print('Aprender a programar en Python es divertidísimo\n'*veces)
Fíjate cómo, después de introducir la primera y pulsar Enter, automáticamente el cursor aparece indentado, preparado para la introducción del bloque de instrucciones.
Una vez incluida la segunda línea, pulsa Enter dos veces para finalizar la edición de la función y regresar al prompt.
¿Qué hace esta función?
Va a imprimir la línea Aprender a programar en Python es divertidísimo tantas veces como indique la variable veces que facilitamos como argumento.
Observa como el argumento se incluye dentro de los paréntesis en la primera línea de la definición de la función.
El código de impresión no debe suponerte ningún misterio. He vuelto a usar el truco que vimos en el capítulo anterior: multiplicar una cadena de caracteres por un número entero hace que la cadena se repita ese número de veces. Al final del string (usaré indistintamente este término o «cadena de caracteres») he incluido el carácter de escape \n, que ya sabes que introduce un salto de línea.
Vamos a invocar a la función. Por ejemplo:
>>> megustapython(5)
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
Aprender a programar en Python es divertidísimo
En esta invocación, la variable veces toma el valor 5. Como resultado, la línea de texto se «multiplica» por 5 y aparece 5 veces en la pantalla.
Las funciones pueden admitir más de un argumento y de cualquier tipo, no sólo numérico.
Volvamos a la función praderazo() del capítulo anterior:
def praderazo():
print('+'*42)
print('+ La casa de la pradera, pedazo serie... +')
print('+'*42)
Esta función imprime el texto La casa de la pradera, pedazo de serie…, enmarcado con símbolos de suma.
Vamos a modificarlo para que repita esa frase tantas veces como deseemos y, además, para que podamos elegir el símbolo que emplearemos como marco.
Facilitaremos dos argumentos a la función: veces y simbolo, que contendrán, como su nombre indica, el número de veces a repetir y el símbolo utilizado en el marco.
def praderazo(veces,simbolo):
print(simbolo*42)
for n in range(veces):
print(simbolo,'La casa de la pradera, pedazo serie...',simbolo)
print(simbolo*42)
Voy a explicar algunas particularidades del código:
La primera línea del cuerpo debe estar clara: imprime 42 veces el símbolo facilitado como parámetro.
Comenzamos a continuación un bucle for que se repetirá tantas veces como hemos indicado en la variable veces. Si no recuerdas el uso de la función range(), puedes revisar el capítulo 20.
En la línea del print se escribe el símbolo, contenido en la variable del mismo nombre que hemos facilitado como argumento, seguido de la frase y cerrando nuevamente con el símbolo. Cuando concatenamos las cadenas separándolas entre comas en print(), Python inserta automáticamente un espacio en blanco entre ellas.
Cerramos el marco, finalmente, imprimiendo nuevamente 42 veces el símbolo.
Invoquemos al genio de la lámpara:
>>>praderazo(5,'?')
??????????????????????????????????????????
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
? La casa de la pradera, pedazo serie... ?
??????????????????????????????????????????
Son ejemplos muy básicos, pero seguro que ya intuyes la tremenda potencia de las funciones…
Javier Montero
El texto de este artículo se encuentra sometido a una licencia Creative Commons del tipo CC-BY-NC-ND (reconocimiento, no comercial, sin obra derivada, 3.0 unported)
El Club del Autodidacta