miércoles, 22 de mayo de 2024

Lenguajes. Python.


F
unciones en Python




Después de haber visto [qué son las funciones], [cómo se crean] y su [uso en OOo Basic], es momento de tratar el tema de las funciones en Python. Para ello, además de la información que proporciona la bibliografía, he seguido el excelente trabajo de [Sebastián J. Bustamante, de FreeCodeCamp], aunque al consultarlo debes tener en cuenta que también contiene información relativa a las funciones built-in explicadas en este blog en [esta entrada].

Y es que como en el resto de los lenguaje de programación, también en Python podemos diferenciar entre las funciones nativas (o funciones built-in, aquellas disponibles en el propio lenguaje) y funciones creadas o propias (aquellas que creamos o que han creado otras personas). 

En esta entrada vamos a hablar de cuestiones generales: cómo se crean y se usan las funciones y qué aportan al lenguaje PythonEmpezando por el final, podemos decir que las funciones cumplen en Python el mismo objetivo que en el resto de los lenguajes: facilitar el proceso de programación, creando subcomponentes reutilizables.

Dado por tratadas las funciones built-in, me centraré ahora en las funciones propias (las creadas por nosotros), que, por cierto, también pueden incluir funciones nativas, aunque su funcionamiento no siempre obedece a la misma lógica. 

Veremos algunas de estas diferencias, pero primero tendremos que aprender a crear funciones sencillas.

La sintaxis de una función propia en Python es como sigue:
  • Utilizamos la palabra reservada def, tanto para el caso de funciones que no tienen parámetros o no devuelven valores (los subprocesos en OOo Basic), como para aquellas que sí los tienen y devuelven valores (las function en sentido estricto de OOo Basic). En esto Python se asemeja al modo de operar de PSeInt, aunque restringiendo la expresión a la palabra reservada def (1)
  • ... seguida del nombre o identificador de la función: def diHola
  • ... seguido de dos paréntesis: def diHola()que pueden estar vacíos (como en el ejemplo anterior), o contener parámetros de entrada, como en def diHolaNombre(nombre)
  • ... y finalizando la línea con dos puntos: def diHola():, que son imprescindibles para que la función sea reconocida como tal (su ausencia provoca respuesta de error)
  • Finalmente se escribe el código que ejecuta la función, siempre sangrado respecto a la posición de def).
Veamos algunas funciones sencillas, como la siguiente función sin parámetros:

def diHola():

print("Hola, amigo")

Esta función (propia) utiliza la función nativa print(), no tiene parámetros y devuelve el string Hola amigo al ser llamada.

Para llamarla nada más simple que escribir su nombre, incluyendo el paréntesis vacío:

diHola() -> devuelve Hola, amigo 

Un segundo ejemplo; una función simple con parámetros (uno)

def diHolaNombre(nombre):

print("Hola " + nombre + ", buenos días.") 

En este caso, la función tiene parámetro, pero carece de sentencia de retorno (return). Para llamarla deberemos proceder igual que antes, pero escribiendo algo dentro del paréntesis (que en el caso de ser una cadena deberá ir entre comillas...)

diHolaNombre("Carmen") -> devuelve  Hola Carmen, buenos días

Paso siguiente (tercer ejemplo): función con un parámetro numérico...

def tablaCinco(num):

                    print("Resultado: " , num * 5)

.... que llamaremos escribiendo un número dentro del paréntesis como único parámetro 

tablaCinco(4) -> devuelve Resultado: 20


Un nuevo ejemplo (y van cuarto): Función con dos parámetros.

def sumaNum(num1, num2):

return num1 + num2

Esta última función que desarrolla la anterior. Es una función con dos parámetros y sentencia de retorno: observa que ahora no usamos la función print() y sí la palabra reservada return, que no es una función nativa, sino una expresión (return num1 + num2)...

...que llamaremos como sigue (observa que escribimos ambos parámetros separados por coma, no mediante el símbolo de la suma, como hacíamos al usar directamente la función print()... 

sumaNum(3,7) -> devuelve 10

 ... aunque el resultado es equivalente a utilizar print(3+7) (2)

Y finalizar, una función (la quinta) que utiliza return y que permite la entrada de parámetro o su ausencia, respondiendo de forma diferente en cada uno de los casos:

 def hola():

 nombre = str(input("Dame tu nombre: "))

 if nombre:

   print ("Hola " + nombre)

 else:

   print("Hola Mundo") 

 return 

 Al ser llamada (sin parámetro hola()) tenemos dos opciones: responde con un nombre a la instrucción (nombre = str(input("Dame tu nombre: "))) o no responder. En el segundo caso devuelve Hola Mundo, y en el primero responde Hola [Nombre].

NOTAS

(1) Recuerda que en PseInt utilizábamos indistintamente las palabras reservadas Subproceso o Funcion, y que en OOo Basic usamos las palabras reservadas Sub, para las subrutinas y Function para las funciones.
(2) Cuando la función contenga parámetros, deberemos usar en la llamada tantos parámetros como contenga la función y del mismo tipo. De no hacerlo dará error.

No hay comentarios:

Publicar un comentario

Comenta esta entrada