¿Es posible pasar un número arbitrario de argumentos predeterminados con nombre a una función de Python condicionalmente?Condicionalmente se pasa un número arbitrario de argumentos con nombre predeterminado a una función
Por ej. hay una función:
def func(arg, arg2='', arg3='def')
Ahora lógica es que tengo una condición que determina si arg3 necesita ser aprobada, puedo hacerlo de esta manera:
if condition == True:
func('arg', arg2='arg2', arg3='some value')
else:
func('arg', arg2='arg2')
La pregunta es, ¿puedo tener una taquigrafía como:
func('arg', 'arg2', 'some value' if condition == True else # nothing so default gets picked
)
¿Qué tiene contra ** y *? – Erin
Nada en contra de '*' y '**'. Solo creo que el código original es más legible. Creo que no me gusta 'a if c else b'. –
Alternativamente, podría usarse alguna lógica condicional (fuera de la llamada a función) para construir un diccionario de argumentos.Luego podrían pasar con '**'. Esto se mantiene legible con una mayor cantidad de argumentos. – Wilduck