Me gustaría tener la siguiente construcción en mi código:

def target_function(*args, key=value, key2=value2, key3=value3, key4=value4):
    print(*args)

def function_prepending_arguments(*args, key4=value4):
    target_function(["a", "b", "c"] + *args, key4=key4)  # does not work, *args is a tuple

Para function_prepending_arguments(["c", "d", "e"], key4="dummy") espero ver ['a', 'b', 'c', 'd', 'e'] en mi salida.

¿Cómo puedo lograr esto (de la manera más pitónica, si es posible)?

0
GoodDok 30 sep. 2019 a las 12:12

3 respuestas

La mejor respuesta

El problema es que no puedes concatenar la lista y la tupla. Entonces, solo pasa ('a', 'b', 'c') + args. O ['a', 'b', 'c'] + list(args)

3
blue_note 30 sep. 2019 a las 09:18

Lo que funcionó para mí fue

def function_prepending_arguments(*args, key=value):
    target_function(['a', 'b', 'c'] + list(*args), key=key)

Gracias a blue_note por empujarme en la dirección correcta.

0
GoodDok 30 sep. 2019 a las 09:34

Una mejor manera sería

x = [1,2,3]
# y = tuple/generator/list
y = (4,5,6)
x.extend(y) # won't return anything.
0
Ketan 30 sep. 2019 a las 09:41
58164762