ágil - python web apostila




Descompacte uma lista em Python? (2)

Acho que "descompactar" pode ser o vocabulário errado aqui - desculpas, porque tenho certeza de que essa é uma pergunta duplicada.

Minha pergunta é bem simples: em uma função que espera uma lista de itens, como posso passar um item de lista do Python sem receber um erro?

my_list = ['red', 'blue', 'orange']
function_that_needs_strings('red', 'blue', 'orange') # works!
function_that_needs_strings(my_list) # breaks!

Certamente deve haver uma maneira de expandir a lista e passar a função 'red','blue','orange' no casco?



Sim, você pode usar a sintaxe *args (splat):

function_that_needs_strings(*my_list)

onde my_list pode ser qualquer iterável; O Python fará um loop sobre o objeto especificado e usará cada elemento como um argumento separado para a função.

Veja a documentação da expressão de chamada .

Há um equivalente de parâmetro de palavra-chave também, usando duas estrelas:

kwargs = {'foo': 'bar', 'spam': 'ham'}
f(**kwargs)

e há uma sintaxe equivalente para especificar argumentos pega-tudo em uma assinatura de função:

def func(*args, **kw):
    # args now holds positional arguments, kw keyword arguments




argument-passing