В чем разница между возвратом и перерывом в python?

В чем разница между return и break в python? Пожалуйста, объясните, что они делают в цикле и функциях? спасибо

Ответ 1

break используется для завершения цикла преждевременно, а return - это ключевое слово, используемое для возврата возвращаемого значения вызывающей функции. Если он используется без аргумента, он просто заканчивает функцию и возвращается туда, где ранее выполнялся код.

Есть ситуации, когда они могут выполнять одну и ту же цель, но вот два примера, чтобы дать вам представление о том, что они используются для

Использование break

Итерирование над списком значений и разбиение, когда мы увидели число 3.

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

loop3()

будет выдавать следующий вывод

0
1
2
3
Found 3!

Использование return

Вот пример того, как return используется для возврата значения после того, как функция вычислила значение на основе входящих параметров:

def sum(a, b):
    return a+b

s = sum(2, 3)
print s

Вывод:

5

Сравнение двух

Теперь, в первом примере, если после цикла ничего не происходило, мы могли бы так же использовать return и "выскочить" из функции немедленно. Сравните результат с первым примером, когда мы используем return вместо break:

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

    print "Found 3!"

loop3()

Выход

0
1
2
3

Ответ 2

break используется для завершения цикла, в то время как return используется для завершения функции (и возврата значения).

Существует также continue в качестве средства для перехода к следующей итерации без завершения текущей.

return иногда может использоваться несколько, как перерыв, когда зацикливание, примером может быть простой функцией поиска, чтобы найти what, lst what в lst:

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

    if item == what:
        return item

И лучше, эквивалентная функция, с return:

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

Подробнее о простых высказываниях читайте здесь.

На уровне инструкций вы можете видеть, что операторы делают разные вещи:

return просто возвращает значение ( RETURN_VALUE) вызывающей стороне:

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

break останавливает текущий цикл ( BREAK_LOOP) и BREAK_LOOP:

>>> 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  

Ответ 3

return завершит всю функцию, а break просто закроет цикл

Пример:

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'   

Ответ 4

Возврат завершает определение в точную точку, на которую он вызывается, передавая переменную после нее непосредственно из определения. Разрыв приведет только к завершению цикла, в котором он находится.

Например

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

bar = Foo()

Это сделает бар равным шести. Код после оператора return никогда не будет запущен.

Пример разрыва:

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

Loop()

Это будет печататься только один раз, поскольку оператор break вызовет конец бесконечного цикла while.

Ответ 5

Посмотрим на пример:

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)))

Отпечатает 3. Зачем? Пройдите через программу:

def f(x, y):

определить функцию

    n = None

установить переменную 'n' в None

    for n in range(x, y):

начните выполнять итерацию с 'x' на 'y'. в нашем случае от одного до девяти

         if not n % 2: continue

прекратите эту итерацию, если 'n' равномерно делится на два

         elif not n % 3: break

оставить эту итерацию, если n равномерно делится на три

    return n

наша функция 'f' "возвращает" значение 'n'

print((f(1, 10)))

'f (1, 10)' печатает три, потому что он вычисляет значение "n", когда выполнение выходит из области действия функции

Ответ 6

Я постараюсь проиллюстрировать это на примере:

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?"