Python kwargs

Funciones y métodos de Python

Tanto Python * args como ** kwargs te permiten pasar un número variable de argumentos a una función. Los argumentos * args no tienen palabras clave, mientras que los argumentos ** kwargs están asociados cada uno con una palabra clave.

Tradicionalmente, cuando estás trabajando con funciones en Python, necesitas indicar directamente los argumentos de la función aceptará.

En algunos casos, donde es posible que desee aceptar más argumentos en el futuro, no es práctico indicar todos los parámetros que desea usar con una función directamente.

Ahí es donde entran las palabras clave * args y ** kwargs de Python. Estas palabras clave le permiten pasar un número indefinido de argumentos a una función. 

Este tutorial discutirá, con referencia a ejemplos, los conceptos básicos de las palabras clave * args y ** kwargs en Python, y cómo se comparan. 




Python * args

El método Python * args representa un número variado de argumentos. Le permite pasar argumentos a una función cuando no está seguro de cuántos argumentos desea pasar.

El término & ldquo; args & rdquo; es un marcador de posición. En su función, puede reemplazar el nombre de & ldquo; args & rdquo; con cualquier valor. Puede utilizar & ldquo; números & rdquo; para representar una lista de números o "estudiante" para representar a los estudiantes y rsquo; detalles.

La sintaxis del método * args es:

El 81% de los participantes afirmaron que se sentían más seguros acerca de sus perspectivas laborales después de asistir a un bootcamp. Consiga emparejar a un bootcamp hoy.

El graduado promedio del bootcamp pasó menos de seis meses en la transición de carrera, desde comenzar un bootcamp hasta encontrar su primer trabajo.

Esta función acepta un número variable de argumentos. Entonces, podríamos pasar cero argumentos, un argumento, dos argumentos, etc. Nuestra función imprime en la consola cada argumento que pasamos a nuestra función.

El valor después del asterisco, & ldquo; números & rdquo; representa nuestros argumentos.

La palabra clave args es útil si está realizando operaciones matemáticas, como si desea sumar una cantidad variable de números.

* args Python Example

Escribamos un programa que sume los valores de varios argumentos. Esto nos permite realizar una suma matemática sin tener que usar un signo más para cada valor que queremos agregar.

Aquí hay un ejemplo de una función que es capaz de sumar varios argumentos:

 def addNumbers (* args): total = 0 para a in args: total = total + a print (total) addNumbers (9, 10, 12) addNumbers (13, 14, 15, 15) 

Nuestro código devuelve:

 31 57 

Primero, declaramos una función Python llamada addNumbers () , que contiene el código de nuestro programa de suma de números. Esta función tiene un argumento especificado: * args.

La palabra clave * args se usa para representar un número variable de argumentos potenciales que podrían pasarse a la función. 

Luego, declaramos una variable de Python llamada total que realiza un seguimiento del número total que estamos agregando. Inicialmente, esta variable se establece en 0.

Usamos un bucle for para revisar cada argumento en la palabra clave args , y agregamos cada número a nuestro total. Tenga en cuenta que cuando se refiere a los argumentos almacenados en * args, utiliza los & ldquo; args & rdquo; palabra clave. A continuación, imprimimos el número total que nuestro programa ha calculado. 

En nuestro programa principal, llamamos dos veces al método addNumbers () . Cuando llamamos por primera vez a la función, especificamos tres números que queremos que nuestra función sume. La próxima vez que llamemos a la función, especificaremos cuatro números que queremos que nuestra función sume.

Debido a que usamos * args, podemos enviar un número ilimitado de argumentos a nuestra función. Nuestro programa funciona sin importar cuántos argumentos pasamos.




Python ** kwargs

La palabra clave ** kwargs representa un número arbitrario de argumentos que se pasan a una función. ** Las palabras clave kwargs se almacenan en un diccionario. Puede acceder a cada elemento haciendo referencia a la palabra clave que asoció con un argumento cuando pasó el argumento.

La sintaxis de ** kwargs es:

 def our_function (** registro): para clave, valor en registro.items (): print (" {} (clave) y {} (valor) ". formato (clave, valor)) 

Este código nos permite pasar un número variable de argumentos de palabras clave a nuestra función. El nombre ** kwargs es solo un sustituto. Puede reemplazar & ldquo; kwargs & rdquo; con cualquier término que desee.

Usamos el nombre después del asterisco como etiqueta para nuestros argumentos de palabras clave. En este caso, nuestra etiqueta es & ldquo; record & rdquo ;. Los valores en un método ** kwargs se almacenan en pares clave-valor. Es por eso que necesitamos usar items () para iterar sobre todos los argumentos que pasamos a nuestra función.


** kwargs Ejemplo de Python

Veamos un ejemplo básico de una función que usa ** kwargs para ilustrar cómo funciona la palabra clave.

Supongamos que estamos creando un programa que muestra información sobre el pedido de un cliente en una cafetería. Queremos pasar la información del pedido del cliente a una función, que luego imprimirá los datos en la consola. Vamos a crear una función:

"Career Karma entró en mi vida cuando más lo necesitaba y rápidamente me ayudó a combinar con un bootcamp. ¡Dos meses después de graduarme, encontré el trabajo de mis sueños que se alineaba con mis valores y metas en la vida! "

Venus, ingeniero de software en Rockbot

Nuestro código devuelve:

 {'coffee':' Mocha', 'price': 2.9,' size': 'Large'} 

Primero, declaramos una función llamada printOrder () que usa la palabra clave ** kwargs para aceptar un número variable de argumentos. Esta función imprime el valor de & ldquo; kwargs & rdquo; (que almacena todos los argumentos de palabras clave pasados ​​a nuestra función).

Luego, llamamos a nuestra función y pasamos tres argumentos: café, precio y tamaño. Cuando pasamos estos valores, se envían a nuestra función como un diccionario.

Nuestro código devolvió un diccionario Python con tres argumentos que especificamos , junto con sus valores. Si quisiéramos, podríamos haber pasado incluso más o incluso menos argumentos, porque ** kwargs representa un número variable de argumentos. 

Debido a que nuestros kwargs están almacenados en un diccionario, podemos acceder a sus valores individualmente como lo haríamos con cualquier diccionario de Python.

Mejorando nuestro código

Ahora, suponga queríamos imprimir los detalles sobre el pedido de café de una manera más estructurada. Podríamos hacerlo usando este código:

 para clave, valor en kwargs.items (): print (" {} es igual a {} ". formato (clave, valor)) printOrder (café =" Mocha ", precio = 2.90, tamaño =" Grande ") 

Nuestro código devuelve:

 el café es igual al precio de Mocha es igual a 2,9 el tamaño es igual a Grande 

Analicemos nuestro código. Primero, declaramos una función llamada printOrder () que usa la palabra clave ** kwargs para aceptar palabras clave. Luego, creamos un bucle for que recorre cada elemento en nuestro diccionario kwargs.

Usamos el método items () del diccionario Python para acceder a cada clave y valor en nuestro diccionario.

Este bucle for imprime el nombre de cada clave en nuestro diccionario (café, precio y tamaño). Luego, imprime el código & ldquo; es igual a & rdquo ;. Finalmente, nuestro código imprime el valor que corresponde a cada clave (& ldquo; Mocha & rdquo ;, 2.90 y & ldquo; Large & rdquo ;, respectivamente). 

Si quisiéramos pasar cuatro palabras clave a nuestro programa, o dos, podríamos hacerlo porque ** kwargs admite listas de argumentos de longitud variable con palabras clave, como * args.




Python * args vs. ** kwargs

Los argumentos enviados a una función usando ** kwargs se almacenan en una estructura de diccionario. * args envía una lista de argumentos a una función.

Además, envíe argumentos usando ** kwargs, debe asignar palabras clave a cada uno de los valores que desea enviar a su función. No necesita especificar palabras clave cuando usa * args.

Un solo asterisco indica * args, mientras que ** kwargs usa un asterisco doble. Esta es una distinción importante porque tanto & ldquo; args & rdquo; como & ldquo; kwargs & rdquo; son marcadores de posición. Puede reemplazar estas palabras con cualquier valor.


Cómo ordenar los argumentos de Python

Argumentos en una función de Python debe aparecer en un orden específico. Este orden es el siguiente:

  • Argumentos formales
  • * args
  • Argumentos de palabras clave
  • ** kwargs

Entonces, si está trabajando con * args y ** kwargs, usaría este código:

 def printOrder (* args, ** kwargs): 

Además, si desea especificar valores predeterminados para ciertos argumentos que puedan surgir, puede usar este código:

 def printOrder (coffee, * args, coffee_order = "Espresso", ** kwargs): 

Esta función espera recibir un argumento llamado café , y el valor predeterminado de cualquier argumento llamado coffee_order será Espresso < / em>. Sin embargo, puede especificar tantos argumentos como desee con esta función, porque se utilizan * args y ** kwargs.