¿Cuál es la diferencia entre el retorno y la ruptura en python?

¿Cuál es la diferencia entre el retorno y la ruptura en python? Por favor, explica qué hacen exactamente en loops y funciones? gracias

break se usa para finalizar un ciclo prematuramente, mientras que return es la palabra clave utilizada para devolver un valor de retorno al llamador de la función. Si se usó sin un argumento, simplemente finaliza la función y regresa a donde se estaba ejecutando el código anteriormente.

Hay situaciones en las que pueden cumplir el mismo propósito, pero aquí hay dos ejemplos para darle una idea de para qué se usan.

Usando el break

Iterando sobre una lista de valores y rompiendo cuando hemos visto el número 3 .

 def loop3(): for a in range(0,10): print a if a == 3: # We found a three, let's stop looping break print "Found 3!" loop3() 

producirá la siguiente salida

 0 1 2 3 Found 3! 

Usando el return

Este es un ejemplo de cómo se utiliza el retorno para devolver un valor después de que la función haya calculado un valor basado en los parámetros entrantes:

 def sum(a, b): return a+b s = sum(2, 3) print s 

Salida:

 5 

Comparando los dos

Ahora, en el primer ejemplo, si no ocurriera nada después del bucle, podríamos haber utilizado el return y “saltar” de la función inmediatamente. Compare la salida con el primer ejemplo cuando usamos return lugar de break :

 def loop3(): for a in range(0, 6): print a if a == 3: # We found a three, let's end the function and "go back" return print "Found 3!" loop3() 

Salida

 0 1 2 3 

break se utiliza para finalizar los bucles, mientras que return se utiliza para finalizar una función (y devolver un valor).

También se puede continue como un medio para pasar a la siguiente iteración sin completar la actual.

return veces se puede usar de alguna manera como una interrupción cuando se realiza un bucle, un ejemplo sería una función de búsqueda simple para buscar en lst

 def search(lst, what): for item in lst: if item == what: break if item == what: return item 

Y más agradable, función equivalente, con return :

 def search(lst, what): for item in lst: if item == what: return item # breaks loop 

Lea más sobre declaraciones simples aquí .

En el nivel de instrucción puedes ver las declaraciones haciendo cosas diferentes:

return solo devuelve un valor ( RETURN_VALUE ) a la persona que llama:

  >>> import dis >>> def x(): ... return ... >>> dis.dis(x) 2 0 LOAD_CONST 0 (None) 3 RETURN_VALUE 

break detiene el bucle actual ( BREAK_LOOP ) y continúa:

 >>> def y(): ... for i in range(10): ... break ... >>> dis.dis(y) 2 0 SETUP_LOOP 21 (to 24) 3 LOAD_GLOBAL 0 (range) 6 LOAD_CONST 1 (10) 9 CALL_FUNCTION 1 12 GET_ITER >> 13 FOR_ITER 7 (to 23) 16 STORE_FAST 0 (i) 3 19 BREAK_LOOP 20 JUMP_ABSOLUTE 13 >> 23 POP_BLOCK >> 24 LOAD_CONST 0 (None) 27 RETURN_VALUE 

return terminaría toda la función mientras que el break simplemente te hace terminar el ciclo

Ejemplo:

 def test_return() for i in xrange(3): if i==1: print i return i print 'not able to reach here' def test_break() for i in xrange(3): if i==1: print i break print 'able to reach here' test_return() # print: 0 1 test_break() # print: 0 1 'able to reach here' 

Retorno saldrá de la definición en el punto exacto en que se llama, pasando la variable después de que salga directamente de la definición. La ruptura solo causará el final de un bucle en el que se encuentra.

Por ejemplo

 def Foo(): return 6 print("This never gets printed") bar = Foo() 

Eso hará barra igual a seis. El código después de la statement de retorno nunca se ejecutará.

El ejemplo de ruptura:

 def Loop(): while True: print("Hi") break Loop() 

Se imprimirá solo una vez, ya que la instrucción break causará el final del bucle infinito while.

Echemos un vistazo a un ejemplo:

 def f(x, y): n = 0 for n in range(x, y): if not n % 2: continue elif not n % 3: break return n print((f(1, 10))) 

Esto imprime 3 . ¿Por qué? Vamos a pasar por el progtwig:

 def f(x, y): 

definir una función

  n = None 

establecer la variable ‘n’ en None

  for n in range(x, y): 

comience a iterar desde ‘x’ hasta ‘y’. En nuestro caso, de uno a nueve.

  if not n % 2: continue 

suspenda esta iteración si ‘n’ es divisible por dos

  elif not n % 3: break 

deje esta iteración si n es divisible por tres

  return n 

nuestra función ‘f’ “devuelve” el valor de ‘n’

 print((f(1, 10))) 

‘f (1, 10)’ imprime tres porque se evalúa como ‘n’ una vez que la ejecución deja el scope de la función

Intentaré ilustrarlo con un ejemplo:

 def age_to_find_true_love(my_age): for age in range(my_age, 100): if find_true_love_at(age): return age if age > 50: break return "...actually do you like cats?"