¿Cómo obtener una única salida de una función con múltiples salidas?

Tengo la siguiente función simple:

def divide(x, y): quotient = x/y remainder = x % y return quotient, remainder x = divide(22, 7) 

Si accedo a la variable x obtengo:

 x Out[139]: (3, 1) 

¿Hay alguna manera de obtener solo el cociente o el rest?

Tienes dos opciones amplias, ya sea:

  1. Modifique la función para devolver uno o ambos según corresponda, por ejemplo:

     def divide(x, y, output=(True, True)): quot, rem = x // y, x % y if all(output): return quot, rem elif output[0]: return quot return rem quot = divide(x, y, (True, False)) 
  2. Deje la función como está, pero ignore explícitamente uno u otro de los valores devueltos:

     quot, _ = divide(x, y) # assign one to _, which means ignore by convention rem = divide(x, y)[1] # select one by index 

Recomiendo encarecidamente una de las últimas formulaciones; ¡Es mucho más simple!

Básicamente, está devolviendo una tupla, que es un iterable que podemos indexar, por lo que en el ejemplo anterior:

print x[0] devolvería el cociente y

print x[1] devolvería el rest

Puede desempaquetar los valores de retorno cuando llama a su método:

 x, y = divide(22, 7) 

O simplemente puedes tomar el primer valor devuelto:

 x = divide(22, 7)[0]