14.5. Argumentos opcionales

Hemos visto funciones internas que toman un numero variable de argumentos.

Por ejemplo, string.find puede tomar dos, tres o cuatro argumentos.

Es posible escribir funciones definidas por el usuario con listas de argumentos opcionales. Por ejemplo, podemos modernizar nuestra propia versión de encuentra para que haga lo mismo que string.find.

Esta es la versión original de la Sección 7.7:

   1: def encuentra(cad, c):
   2:     indice = 0
   3:         while indice < len(cad):
   4:             if str[indice] == c:
   5:             return indice
   6:         indice = indice + 1
   7:     return –1

 

Esta es la versión aumentada y mejorada:




   1: def encuentra(cad, c, comienzo=0):
   2:     indice = comienzo
   3:     while indice < len(cad):
   4:         if str[indice] == c:
   5:             return indice
   6:         indice = indice + 1
   7:     return –1

 


El tercer parámetro, comienzo, es opcional porque se proporciona un valor por omisión, 0. Si invocamos encuentra solo con dos argumentos, utilizamos el valor por omisión y comenzamos por el principio de la cadena:




   1: >>> encuentra("arriba", "r")
   2: 1

Si le damos un tercer parámetro, anula el predefinido:



   1: >>> encuentra("arriba", "r", 2)
   2: 2
   3: >>> encuentra("arriba", "r", 3)
   4: –1

 



Como ejercicio, a~nada un cuarto parámetro, fin, que especifique donde dejar de buscar.


Cuidado: Este ejercicio tiene truco. El valor por omisión de fin debería ser len(cad), pero eso no funciona. Los valores por omisión se evalúan al definir la función, no al llamarla. Cuando se define encuentra, cad aun no existe, así que no puede averiguar su longitud.

0