miércoles, 22 de mayo de 2024

Lenguajes. Python.

Funciones en Python. Parámetros (2)

Ya al inicio de esta serie de entradas dedicadas a las funciones en Python hablamos de la estructura o, mejor dicho, estructuras posible de una función e indicamos que uno de sus componentes posibles (que no siempre presente) era los parámetros. Dedicaremos esta entrada a tratar sobre este componente y sus diferentes manifestaciones.


Como ya sabemos, un parámetro es una indicación o referencia a los datos que puede recibir una función y con los que opera. En las build-in functions, los parámetros pueden ser obligatorios u opcionales, pero en las funciones que creamos nosotros puede estar presentes o no (el juego de paréntesis que los alberga siempre lo estará, aunque sea vacío), pero en caso de estarlo son siempre obligatorios, por lo que, cuando llamamos a la función desde el script principal, deberemos incluir necesariamente tantos argumentos como parámetros tenga la función.

Por cierto, esta distinción entre parámetro y argumento no siempre se respeta a nivel terminológico, pero es conveniente conocerla para evitar confusiones terminológicas. El gráfico siguiente pretende servir a este fin.


NOTA 1. Cuando definimos la función y cuando trabajamos con ella, hablamos de parámetros, mientras que cuando la llamamos desde el script principal (o desde otra función), hablamos de argumentos.

Aclarada esta cuestión, seguimos con el uso de argumentos en la llamada a la función y su relación con la declaración de parámetros que hacemos en ella, ya que una cuestión de interés es que, aunque en las funciones creadas es obligatorio utilizar tantos argumentos como parámetros tenga la función, esto no implica que deba hacerse necesariamente en el mismo orden; si bien esto es lo común, no es la única opción.

De hecho podemos diferenciar entre solicitud mediante argumentos posicionales y mediante argumentos nombrados.
  • Los argumentos posicionales son los que respetan el orden y el tipo de parámetros declaramos en la función.
  • Los argumentos nombrados utilizan para expresarse el par clave-valor, siendo la clave la denominación que recibe el parámetro en la declaración de la función.
Al utilizar esa clave como referencia se facilita que la función establezca la identificación del valor o dato con el parámetro, de modo que no queda limitada a asociación a la igualdad de posición en los órdenes respectivos de argumentos y parámetros. Aunque podemos utilizar ambas peticiones en el mismo llamamiento a la función, debemos tener en cuenta que existen algunas restricciones, como veremos en el ejemplo siguiente:
 
def opera_num(num1,num2,num3):
    total = (num1 - num2) * num3
    print(total)

opera_num(23,15,7)
opera_num(num3 = 23, num1 = 15, num2 = 7)
opera_num(23,15, num3 = 7)
opera_num(num3 = 23, num2 = 15, num1 = 7)
opera_num(num1 = 23,15, 7)

Esta función (opera_num()) consta de tres parámetros (num1,num2,num3, todos ellos datos numéricos para simplificar) y realiza una operación ( total = (num1 - num2) * num3) con los datos que se le  pasan desde el script principal (en este caso). No tiene instrucción return, pero sí ejecuta la función print(total)

Debajo presentamos diferentes formas de realizar la asignación de argumentos:
  • La primera es posicional pura (opera_num(23,15,7)) y devuelve 56.
  • La segunda lo es de palabra clave o nombrada pura (opera_num(num3 = 23, num1 = 15, num2 = 7)) y devuelve 184.
  • También lo es la cuarta (opera_num(num3 = 23, num2 = 15, num1 = 7)), que devuelve -184.
  • La tercera (opera_num(23,15, num3 = 7)) es mixta y devuelve 56.
  • Y la quinta provoca error por incumplir la restricción que presenta la solicitud por nombrado: no se puede realizar una solicitud por palabra-clave seguida de una por posición (sí al contrario). Esta quinta formulación bloquea la ejecución del script

Dejo cerrada esta entrada, aunque no se agota con ella el análisis de los parámetros de las funciones ni mucho menos el estudio de las propias funciones. Aun hay camino por recorrer, pero paso a paso.

No hay comentarios:

Publicar un comentario

Comenta esta entrada