O objetivo de * e ** em Python

Najwa Riyaz 30 janeiro 2023
  1. a definição de * em Python
  2. a definição de ** em Python
  3. os usos de * e ** em chamadas de função em Python
O objetivo de * e ** em Python

Este artigo explica o propósito de * e ** em Python.

Em Python, usamos o asterisco único (*) e o asterisco duplo (**) para significar um número variável de argumentos.

Podemos passar qualquer número de argumentos em uma função Python de uma das seguintes maneiras.

  1. Argumentos posicionais (*)
  2. Argumentos de palavra-chave (**)

a definição de * em Python

Use o símbolo * em Python para permitir um número variável de argumentos / parâmetros posicionais para a função.

Siga o exemplo abaixo.

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

Agora, o código do driver, com lista ou tuple, é o seguinte.

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

Resultado:

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

Use argumentos apenas posicionais se não quiser que os usuários saibam o nome dos parâmetros.

Por exemplo, é aconselhável usar variáveis ​​apenas posicionais em APIs - isso evita quebras no caso de qualquer alteração na API se o nome do parâmetro for modificado.

a definição de ** em Python

Use o símbolo ** em Python para permitir um número variável de argumentos / parâmetros de palavra-chave para a função. Observe que o argumento após deve ser um mapeamento (par de valores-chave de dicionário) itens, não uma tupla ou uma lista.

Siga o exemplo de código abaixo.

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))

No exemplo acima, keywordargs está associado a um dicionário como no programa abaixo.

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

Resultado:

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

No exemplo acima, o **keywordargs fornece argumentos de palavra-chave como pares de valor-chave dicionário.

os usos de * e ** em chamadas de função em Python

Os símbolos * e ** também são usados ​​em chamadas de função. Use-os para passar um número variável de argumentos para uma função usando um dos seguintes.

  • uma lista - *
  • uma tupla - *
  • um dicionário - **

Aqui estão vários exemplos que você pode seguir.

Chame a função com uma lista de variável como entrada. Use * como segue

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

Chame a função com uma variável dicionário como entrada. Use ** como segue

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

Chame a função com uma variável tuple como entrada. Use * como segue

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

A saída para todos os casos acima é:

SNo1 = Tom
SNo2 = John
SNo3 = Alice