Retorno de valores y la declaración return en funciones de Python

Cuando se llama a la función len() y se le pasa un argumento como 'hello', la llamada a la función se evalúa al valor entero 5, que es la longitud de la cadena que se le pasó. En general, el valor al que se evalúa una llamada a una función se denomina valor de retorno de la función.

Cuando se crea una función utilizando la sentencia def, se puede especificar cuál debe ser el valor de retorno con una sentencia return. Una sentencia return consiste en lo siguiente:

  • La palabra clave return
  • El valor o expresión que la función debe devolver

Cuando se utiliza una expresión con una sentencia return, el valor de retorno es lo que evalúa esta expresión. Por ejemplo, el siguiente programa define una función que devuelve una cadena diferente dependiendo del número que se le pase como argumento. Introduce este código en el editor de archivos y guárdalo como magic8Ball.py:

➊ import random

➋ def getAnswer(answerNumber):
    ➌ if answerNumber == 1:
           return 'It is certain'
       elif answerNumber == 2:
           return 'It is decidedly so'
       elif answerNumber == 3:
           return 'Yes'
       elif answerNumber == 4:
           return 'Reply hazy try again'
       elif answerNumber == 5:
           return 'Ask again later'
       elif answerNumber == 6:
           return 'Concentrate and ask again'
       elif answerNumber == 7:
           return 'My reply is no'
       elif answerNumber == 8:
           return 'Outlook not so good'
       elif answerNumber == 9:
           return 'Very doubtful'

➍ r = random.randint(1, 9)
➎ fortune = getAnswer(r)
➏ print(fortune)

Puedes ver la ejecución de este programa en https://autbor.com/magic8ball/. Cuando este programa se inicia, Python importa primero el módulo random ➊. Luego se define la función getAnswer() ➋. Como la función está siendo definida (y no llamada), la ejecución se salta el código en ella. A continuación, se llama a la función random.randint() con dos argumentos: 1 y 9 ➍. Se evalúa a un entero aleatorio entre 1 y 9 (incluyendo el propio 1 y 9), y este valor se almacena en una variable llamada r.

Se llama a la función getAnswer() con r como argumento ➎. La ejecución del programa se traslada a la parte superior de la función getAnswer() ➌, y el valor r se almacena en un parámetro llamado answerNumber. Entonces, dependiendo del valor en answerNumber, la función devuelve uno de los muchos valores de cadena posibles. La ejecución del programa vuelve a la línea en la parte inferior del programa que originalmente llamó a getAnswer() ➎. La cadena devuelta se asigna a una variable llamada fortune, que luego se pasa a una llamada a print() ➏ y se imprime en la pantalla.

Ten en cuenta que como puedes pasar los valores devueltos como argumento a otra llamada de función, podrías acortar estas tres líneas:

r = random.randint(1, 9)
fortune = getAnswer(r)
print(fortune)

a esta única línea equivalente:

print(getAnswer(random.randint(1, 9)))

Recuerda que las expresiones se componen de valores y operadores. Una llamada a una función puede utilizarse en una expresión porque la llamada se evalúa a su valor de retorno.

Deja una respuesta