28 - Funciones: con parámetros con valor por defecto

En Python se pueden definir parámetros y asignarles un dato en la misma cabecera de la función. Luego cuando llamamos a la función podemos o no enviarle un valor al parámetro.

Los parámetros por defecto nos permiten crear funciones más flexibles y que se pueden emplear en distintas circunstancias.

Problema 1:

Confeccionar una función que reciba un string como parámetro y en forma opcional un segundo string con un caracter. La función debe mostrar el string subrayado con el caracter que indica el segundo parámetro

Programa: ejercicio138.py

Ver video

def titulo_subrayado(titulo,caracter="*"):
    print(titulo)
    print(caracter*len(titulo))


# bloque principal

titulo_subrayado("Sistema de Administracion")
titulo_subrayado("Ventas","-")

Cuando ejecutamos esta aplicación podemos observar el siguiente resultado:

parámetros por defecto en python

Lo primero importante en notar que la llamada a la función titulo_subrayado la podemos hacer enviándole un dato o dos datos:

titulo_subrayado("Sistema de Administracion")
titulo_subrayado("Ventas","-")

Esto no podría ser correcto si no utilizamos una sintaxis especial cuando declaramos los parámetros de la función:

def titulo_subrayado(titulo,caracter="*"):
    print(titulo)
    print(caracter*len(titulo))

Como vemos el parámetro caracter tiene una asignación de un valor por defecto para los casos que llamamos a la función con un solo parámetro.

Cuando la llamamos a la función titulo_subrayado con un solo parámetro luego el parámetro caracter almacena el valor "*". Si llamamos a la función y le pasamos dos parámetros en nuestro ejemplo caracter almacena el string "-"

El algoritmo de la función es muy sencillo, imprimimos el primer parámetro:

    print(titulo)

Para mostrar subrayado el titulo procedemos a imprimir el caracter del segundo parámetro tantas veces como caracteres tenga el string del titulo. Utilizamos una propiedad de los string en Python que nos permite utilizar el operador matemático * y generar un string del largo del título:

    print(caracter*len(titulo))

Importante

Los parámetros por defecto deben ser los últimos que se declaren en la función. Se genera un error sintáctico si tratamos de definir una función indicando primero el o los parámetros con valores por defecto:

parámetros por defecto en python con error

Problema propuesto

  • Confeccionar una función que reciba entre 2 y 5 enteros. La misma nos debe retornar la suma de dichos valores. Debe tener tres parámetros por defecto.

    Ver video

Solución
ejercicio139.py

def sumar(v1,v2,v3=0,v4=0,v5=0):
    s=v1+v2+v3+v4+v5
    return s


# bloque principal

print("La suma de 5 + 6")
print(sumar(5,6))
print("La suma de 1 + 2 + 3")
print(sumar(1,2,3))
print("La suma de 1 + 2 + 3 + 4 + 5")
x=sumar(1,2,3,4,5)
print(x)