Mi función espera una lista o una tupla como parámetro. Realmente no importa lo que es, todo lo que hace es pasar a otra función que acepta una lista o tupla:Parámetro de función de Python: tuple/list
def func(arg): # arg is tuple or list
another_func(x)
# do other stuff here
Ahora tengo que modificar ligeramente la función, para procesar un elemento adicional:
def func(arg): #arg is tuple or list
another_func(x + ['a'])
# etc
Desafortunadamente esto no va a funcionar: si arg es tupla, debo decir x + ('a',)
.
Obviamente, puedo hacerlo funcionar forzando arg a la lista. Pero no es limpio.
¿Hay una mejor manera de hacerlo? No puedo obligar a las personas que llaman a pasar una tupla siempre, por supuesto, ya que simplemente cambia para trabajar para ellos.
Si la otra función acepta, o no, le enviaré una tupla, ya que será más rápido para trabajar con ella. Entonces, ¿qué no es bueno sobre 'tuple (x) + ('a',)'? – aaronasterling
¿Las tuplas son más rápidas en la implementación? – max
construir una tupla de cadenas y literales numéricos es más rápido que construir una lista. Más importante aún, 'tuple (x)' simplemente devuelve 'x' si ya es una tupla, mientras que' list (x) 'copia' x' incluso si ya es una lista. Entonces, al usar una tupla, cortas la mayor parte del trabajo en la mitad de tus casos de entrada. – aaronasterling