Cómo utilizar los parámetros en Python

Tiempo estimado de lectura: 5 minutos

¿Estás usando una función y buscas pasarle valores para que los procese? Bueno, si este es el caso, estás tratando de pasar argumentos a los parámetros de esa función para que te devuelvan un valor.

Los parámetros son sólo valores que se asocian a la función. Para cada función, va a tener uno o más parámetros que espera procesar.

Por ello, hay varias formas de crearlas, exploremos cómo se puede conseguir.

Pasar argumentos directamente a los parámetros de una función

En muchos casos, los valores de los argumentos a procesar van a ser pasados a los parámetros de la función, que luego ejecuta alguna lógica y devuelve un valor.

Las formas típicas en que esto puede ocurrir:

  1. Se introduce una contraseña (el argumento introducido), la función confirma entonces si es válida o no.
  2. Es posible que necesite comprobar si un valor introducido (el argumento introducido) está por encima o por debajo de un determinado valor. Se pasa a un parámetro de la función y entonces la función hace las comprobaciones necesarias, y confirma el resultado en la salida.

Los anteriores son dos ejemplos, pero veamos esto en acción.

A continuación tenemos una función. El propósito es tomar dos argumentos que se le pasan y realizar un cálculo sobre ellos.

El cálculo ocurre en la variable número 1 o número 2.

La variable número 1 y la variable número 2 obtienen sus valores de los parámetros a y b respectivamente.

La línea multiplenumber(1,2) es sólo llamar a la función y pasar los argumentos a los parámetros a,b que luego los procesa y la salida se imprime.

def multiplenumber(a,b):
    number1 = a*2
    number2 = b*3
    print(number1,number2) #===> These values are different to the variables below as they happen as a result of the processing inside the function.

number1=1
number2=2
multiplenumber(number1,number2)
print(number1,number2) #===> These values are outside the function and do not have any relationship to the variables inside the function above, hence are different.

Result:
2 6
1 2

El resultado de la pieza lógica anterior se llama "pasar por valor", que esencialmente significa que los datos se pasan de las variables ( número 1 y número 2) a los parámetros de la función, pero cuando la función se termina de procesar, no impacta en las variables originales fuera de la función.

Esto se debe a que las variables originales son inmutables.

Pasar argumentos directamente a los parámetros de la función desde una lista

En el ejemplo anterior, tal y como se ha expuesto, no habrá ningún impacto en las variables que pasan los argumentos a la función, siguen siendo las mismas.

Por otro lado, si la fuente original de los argumentos es un objeto mutable, se modificarán sus valores.

Veamos una situación en la que esto puede ocurrir.

def addnumber(a):
    number=['3']
    a.append(number)
    print(a) #===> This prints the original value of a with the addition of the value 3

number1=[1,2]
addnumber(number1)
print(number1) #===> As number1 is passed to the function, and number1 is allowed to be changed then this will print out the new list value once the function has completed processing.

Result:
[1, 2, ['3']]
[1, 2, ['3']]

Así que en este caso, como number1 es una lista, y ésta es mutable, su valor cambiará una vez que la función complete su procesamiento.

Esto también puede llamarse "pasar por referencia".

Paso de argumentos entre funciones

En otro video, completamos llamado cómo pasar datos entre funciones esto discute cómo puede pasar los datos entre dos funciones e imprimirlos.

Efectivamente en lo que sigue los argumentos son nombre, país, ciudad, y estos valores se pasan a la funciónb

def funcióna():
    nombre = "José" 
    país = " Marte" 
    ciudad = " atlantis" 
    #esto captura las tres variables anteriores
    return nombre,país,ciudad
funcióna()

def funciónb():
    minombre,mipaís,miciudad = funcióna()
    print(minombre)
    print(mipaís)
    print(miciudad)

funciónb()

Resultado:
Joseph
Marte
atlantis

Pasar argumentos utilizando *args como parámetro

Para entender esto, antes de ver algo de código tenemos que entender qué son los *args?

*args esencialmente le permite pasar múltiples argumentos posicionales a una función, y esto puede variar con el tiempo.

Como resultado, no tienes que asignar los argumentos posicionales a más de una variable. Los *args toman todos los argumentos, sin importar lo largos o cortos que sean y luego devuelven un valor.

def addnumbers(*args):
    result = 2
    for x in args:
        result = result * x
    return result

print(addnumbers(1,2,3))

Result:
12

Pasar argumentos utilizando **kwargs como parámetro

A diferencia de lo anterior, esto procesará un conjunto de valores que tienen un nombre adjunto.

Como se puede ver en el ejemplo anterior, los argumentos pasados no tenían ningún nombre.

Veamos un ejemplo. En este escenario, a los argumentos se les asigna un valor de a,b,c.

def addnumbers(**kwargs):
    result = 2
    for x in kwargs.values():
        result = result * x
    return result

print(addnumbers(a=1,b=2,c=3))

Result:
12

Aquí está claro que la lógica toma cada valor de a,b,c lo procesa y luego devuelve el resultado requerido.

En esencia, tanto *args como **kwargs te dan la misma respuesta, sólo depende de otras partes de tu código y de cómo esté procesando tus datos.

Por ejemplo, en los **kwargs podría ser que los valores de a,b,c fueran rellenados por otras variables dentro del programa.

Así que en ese escenario, la variable que se ha pasado puede cambiar y no ser estática.

Así que en resumen:

a. Los argumentos pueden ser pasados de múltiples maneras a las funciones, los parámetros entonces sólo los procesan.

b. Los parámetros tampoco tienen que ser asignados a una variable, pueden ser leídos a través de *args.

c. Por otro lado, puedes tener varios argumentos leídos a la vez utilizando los **kwargs.

Deje una respuesta

Su dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *.