[pyar] return funciones
"Matías A. Bellone"
matiasbellone en gmail.com
Jue Mar 14 12:25:36 ART 2013
On 03/14/2013 12:11 PM, Ramiro Floydant wrote:
> A ver si logro entender.
>
> def run(diccionario, *key*): # Le paso los argumentos d(diccionario) y
> 'k' clave del diccionario.
> while True: # Comienza el loop
> funcion = diccionario[*key*] # funcion es igual al valor de la
> clave 'k' que sería la función v
> print "-----------"
> print funcion.__doc__ # imprimo el docstring de la función v
> inpt = raw_input("> ")
> *key = *funcion(inpt) # aca llamó a la función v y el resultado que
> devuelve lo guardo en key
>
> run(d, 'k')
>
> Si los comentarios son correctos, lo que no logro entender es por dónde
> vuelve a pasar el resultado almacenado en key por el loop.
>
Una cosa es el bucle (como bien mencionás acá) y otra cosa es el
argumento de la función cuando la invocás (que fue lo que dijiste
antes). Cito:
>2013/3/14 Ramiro Floydant <ramirotrvnt18 en gmail.com>:
>> Ah, casi me olvido:
>>
>> cuando guardo el resultado de funcion() en key, ese valor después
>> pasa como
>> argumento de la función run y así sucesivamente?
La corrección que te hicieron fue justamente porque mencionaste la
invocación de la función «run» luego de asignarle un valor a la variable
«key». Tu función no vuelve a ejecutarse a sí misma, por lo que eso no
sucede. Lo que sí sucede es que tu ciclo vuelve a comenzar,
efectivamente con un nuevo valor en la variable «key», pero no vuelve a
llamar la función, sólo continúa su ejecución.
Por ejemplo, si tu función fuese algo como sigue:
def prueba(algo, otroalgo):
print 'algo'
while True:
print otroalgo
otroalgo = otroalgo + 1
Lo que pasaría es que se imprimiría una vez «algo» y luego los números
comenzando con lo que sea que hayas indicado en el segundo parámetro al
ejecutar la función.
Tu comentario, en el contexto de esta nueva función, hacía suponer que
pretendrías que al cambiar valor de «otroalgo» volviera a ejecutar toda
la función. Esto significa que esperabas que se imprimiera «algo» entre
cada número en lugar de simplemente continuar ejecutando el ciclo
imprimiendo números cada vez más y más grandes.
Seguramente este malentendido es debido a que utilizas palabras que
significan para nosotros algo completamente distinto de lo que realmente
quisiste decir.
Saludos y sigue aprendiendo!
Toote
More information about the pyar
mailing list