El propósito de * y ** en Python

Najwa Riyaz 30 enero 2023
  1. La Definición de * en Python
  2. La Definición de ** en Python
  3. Los usos de * y ** en llamadas a funciones en Python
El propósito de * y ** en Python

Este artículo explica el propósito de * y ** en Python.

En Python, usamos el asterisco simple (*) y el asterisco doble (**) para significar un número variable de argumentos.

Podemos pasar cualquier número de argumentos en una función de Python de cualquiera de las siguientes formas.

  1. Argumentos posicionales (*)
  2. Argumentos de palabras clave (**)

La Definición de * en Python

Utilice el símbolo * en Python para permitir un número variable de argumentos / parámetros posicionales para la función.

Siga el ejemplo a continuación.

def function_singleasterix(*someargs):
    for i in someargs:
        print(i)

Ahora, el código del controlador, ya sea con lista o tuple es el siguiente.

listdata = ["Alex", "Tom", "John", "Alice"]
function_singleasterix(listdata)

Producción :

['Alex', 'Tom', 'John', 'Alice']

Utilice argumentos solo posicionales si no desea que los usuarios conozcan el nombre de los parámetros.

Por ejemplo, es aconsejable utilizar variables solo posicionales en las API; esto evita roturas en caso de cambios en la API si se modifica el nombre del parámetro.

La Definición de ** en Python

Utilice el símbolo ** en Python para permitir un número variable de argumentos / parámetros de palabras clave para la función. Tenga en cuenta que el argumento posterior debe ser un elemento de mapeo (par clave-valor de diccionario), no una tupla o una lista.

Siga el código de ejemplo a continuación.

def function_doubleasterix(**keywordargs):

    print("The keys in the kwargs dicionary are -", keywordargs.keys())
    print("The values in the kwargs dicionary are -", keywordargs.values())

    print("--The key value assignment in the 'keywordargs' dictionary are as follows--")
    for key, value in keywordargs.items():
        print("%s == %s" % (key, value))

En el ejemplo anterior, keywordargs está asociado con un diccionario como en el programa siguiente.

function_doubleasterix(SNo001="Alex", SNo002="Tom")

Producción :

The keys in the 'keywordargs' dicionary are - dict_keys(['SNo001', 'SNo002'])
The values in the 'keywordargs' dicionary are - dict_values(['Alex', 'Tom'])
--The key value assignment in the 'keywordargs' dictionary are as follows--
SNo001 == Alex
SNo002 == Tom

En el ejemplo anterior, **keywordargs proporciona argumentos de palabras clave como pares clave-valor de diccionario.

Los usos de * y ** en llamadas a funciones en Python

Los símbolos * y ** también se utilizan en las llamadas a funciones. Úselos para pasar un número variable de argumentos a una función usando cualquiera de los siguientes.

  • una lista - *
  • una tupla - *
  • un diccionario - **

Aquí hay varios ejemplos que puede seguir.

Llame a la función con una lista de variables como entrada. Utilice * como sigue

varlist = ["Tom", "John", "Alice"]
functiondef(*varlist)

Llame a la función con una variable diccionario como entrada. Utilice ** de la siguiente manera

vardict = {"a": "Tom", "b": "John", "c": "Alice"}
functiondef(**vardict)

Llame a la función con una variable tuple como entrada. Utilice * como sigue

vartuple = ("Tom", "John", "Alice")
functiondef(*vartuple)

La salida para todos los casos anteriores es:

SNo1 = Tom
SNo2 = John
SNo3 = Alice

Artículo relacionado - Python Argument