3.6. Añadir funciones nuevas

Hasta ahora solo hemos usado las funciones que vienen incluidas con Python, pero también es posible añadir nuevas funciones. La creación de nuevas funciones para resolver sus problemas particulares es una de las cosas mas útiles de los lenguajes de programación de propósito general.

En contextos de programación, función es una secuencia de instrucciones con nombre, que lleva a cabo la operación deseada. Esta operación se especifica en una definición de función. Las funciones que hemos usado hasta ahora las han definido por nosotros, y esas definiciones están ocultas. Eso es bueno, ya que nos permite usar funciones sin preocuparnos sobre los detalles de sus definiciones.

La sintaxis de la definición de una función es:

   1: def NOMBRE( LISTA DE PARAMETROS ):
   2:     SENTENCIAS


Puede inventarse el nombre que desee para su funcion, con la excepcion de que no puede usar las palabras reservadas de Python. La lista de parámetros especifica que informacion, en caso de haberla, ha de proporcionar para usar la función nueva.


Puede haber cualquier numero de sentencias dentro de la funcion, pero tienen que estar indentadas desde el margen izquierdo. En los ejemplos de este libro se usara una indentacion de dos espacios.


El primer par de funciones que escribiremos no tienen parametros, de manera que su sintaxis es:




   1: def nueva_linea():
   2:     print


Esta funcion se llama nueva linea. Los parentesis vac³os indican que no tiene parámetros. Contiene una unica sentencia, que muestra como salida un carácter de nueva línea (es lo que sucede cuando utiliza una orden print sin argumentos).


Llamamos entonces a la funcion nueva usando la misma sintaxis que usamos para las funciones internas:




   1: print "Primera linea."
   2: nueva_linea()
   3: print "Segunda linea."
   4: The output 
   5: of this program is
   6: Primera linea.
   7: Segunda linea.

Observe el espacio a~nadido que hay entre las dos l³neas. Si quisieramos mas espacios, entre las l³neas, >que har³amos? Podemos llamar varias veces a la misma función:




   1: print "Primera 
   2: linea."
   3: nueva_linea()
   4: nueva_linea()
   5: nueva_linea()
   6: print "Segunda 
   7: linea."

O bien podemos escribir una nueva funcion que llamaremos tresLineas, y que imprima tres nuevas líneas:




   1: def tresLineas():
   2:     nueva_linea()
   3:     nueva_linea()
   4:     nueva_linea()
   5:     print 
   6:     "Primera Linea."
   7:     tresLineas()
   8:     print "Segunda Linea."
   9:     

Esta funcion contiene tres sentencias, las cuales estan todas indentadas con dos espacios. Puesto que la siguiente sentencia no esta indentada, Python sabe que no es parte de la funcion.


Observe los siguientes puntos con respecto a este programa:



1. Se puede llamar al mismo procedimiento repetidamente. De hecho es bastante util hacerlo, ademas de habitual.
2. Se puede llamar a una funcion desde dentro de otra funcion: en este caso tresLineas llama a nueva linea.


Hasta ahora puede no haber quedar claro por que vale la pena crear todas estas funciones nuevas. En realidad hay much³simas razones, pero este ejemplo demuestra dos:


Crear una nueva funcion le da la oportunidad de dar un nombre a un grupo de sentencias. Las funciones simplifican su programa al ocultar cálculos complejos detras de ordenes sencillas, y usar palabras de su propia lengua
en vez de codigo arcano.


Crear una nueva funcion hace que el programa sea mas pequeño, al eliminar codigo repetitivo. Por ejemplo, una manera de imprimir nueve líneas consecutivas es llamar a tresLineas tres veces.


Como actividad, escriba una funcion llamada nueveLineas que use tresLineas para imprimir nueve líneas en blanco. ¿Como imprimiría 27 líneas nuevas?

0