В чем разница между return и break в python? Пожалуйста, объясните, что они делают в цикле и функциях? спасибо
В чем разница между возвратом и перерывом в 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?"