Ya hemos visto cómo hacer para que las funciones que se comporten como las funciones que conocemos, las de la matemática, que se usan para calcular resultados.
Veremos ahora varias cuestiones a tener en cuenta al escribir funciones. Para ello volvemos a escribir una función que eleva al cuadrado un número.
>>> def cuadrado (x):
... cua = x * x
... return cua
...
>>> y = cuadrado(5)
>>> y
25
>>>
¿Por qué no usamos dentro del programa el valor cua
calculado dentro de la función?
>>> def cuadrado (x):
... cua = x * x
... return cua
...
>>> cua
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'cua' is not defined
>>>
Nota Las variables y los parámetros que se declaran dentro de una función no existen fuera de ella, no se los conoce. Fuera de la función se puede ver sólo el valor que retorna y es por eso que es necesario introducir la instrucción return
.
¿Para qué hay que introducir un return
en la función? ¿No alcanza con el valor que se calcula dentro de la misma para que se considere que la función retorna un valor? En Python no alcanza (hay otros lenguajes en los que se considera que el último valor calculado en una función es el valor de retorno de la misma).
>>> def cuadrado (x):
... cua = x * x
...
>>> y = cuadrado(5)
>>> y
>>>
Cuando se invoca la función cuadrado mediante la instrucción y = cuadrado(5)
lo que sucede es lo siguiente:
- Se invoca a
cuadrado
con el argumento5
, y se ejecuta el cuerpo de la función. - El valor que devuelve la función se asocia con la variable
y
. - Es por eso que si la función no devuelve ningún valor, no queda ningún valor asociado a la variable
y
.