Nov 10

Python: Funciones que devuelven más de un valor

Etiquetas: Python Versión para imprimir Pablo

Muchas veces nos encontramos con situaciones en las que nos vendría muy bien poder devolver más de un valor en una función… generalmente podemos recurrir a arrays, colecciones, diccionarios, hastables, etc. Pero en Python podemos devolver múltiples valores en una misma función y lo mejor de todo es que esos valores de retorno pueden ser de diferente tipo.

Dejo un par de ejemplos, escribo la función y luego la ejecuto para probar.

def masUnoMasDos(x):
     return x+1, x+2
 
print ""
print "masUnoMasDos()"
 
a,b = masUnoMasDos(7)
print "x+1 = "+str(a)
print "x+2 = "+str(b)
 
print "---------"
 
def rojo():
     return 255, 0, 0
 
print ""
print "rojo()"
 
print rojo()
 
print "---------"
 
def rojoHexa():
     return "ff", "00", "00"
 
print ""
print "rojoHexa()"
 
print rojoHexa()

Obtendremos la siguiente salida:

masUnoMasDos()
x+1 = 8
x+2 = 9
---------

rojo()
(255, 0, 0)
---------

rojoHexa()
('ff', '00', '00')

Para probar este código rápidamente, en caso de no tener Python instalado pueden utilizar http://codepad.org que es una excelente herramienta online, la misma permite compilar y ejecutar código en varios lenguajes, incluyendo: C/C++, D, Haskel, PHP, Pearl, Python y Ruby, entre otros.

También te puede interesar:

Comentarios[5]

  1. fernandoNo Gravatar

    interesante, sobre todo el primer caso: a,b = masUnoMasDos(7), parece que ejecuta dos veces la funcion llamando una sola vez al metodo.

  2. maeghithNo Gravatar

    generalmente podemos recurrir a arrays, colecciones, diccionarios, hastables, etc. Pero en Python podemos devolver múltiples valores en una misma función

    Suena como si no se estuviera recurriendo a uno de esos tipos, pero el caso es que, al hacer lo que comentas, lo que hace python es devolver una tupla (que es uno de esos tipos), así que tampoco es que los estés esquivando mucho.

    Puedes comprobarlo en el interprete de python:

    >>>def test():
    ...  return 1,2,"papagallo"
    ...
    >>>type(test())
    <type 'tuple'>
    
  3. PabloNo Gravatar

    @maeghith: Tienes razón, pero creo que no me expliqué bien, a lo que yo me refiero es a que generalmente declaras un Array, lo cargas con los valores a devolver y recién ahí haces el return, en cambio con ésta posibilidad de Python puedes hacer el return directamente.

  4. @chakaNo Gravatar

    eso es porque no es un lenguaje tipado, lo que no quiere decir que no estes usando el tipo, o que el python no lo este usando xDDD

    PD: de puro throll noma

  5. Devolver más de un valor en funciones de Python

    [...] Vía: Nuevos Programadores [...]

Deja un comentario