в чем разница между return и break в python?
в чем разница между return и break в python? Пожалуйста, объясните, что именно они делают в циклах и функциях? спасибо
5 ответов
break
используется, чтобы завершить цикл досрочно, а return
- ключевое слово, используемое для передачи возвращаемого значения вызывающему объекту функции. Если он используется без аргумента, он просто завершает функцию и возвращается туда, где код выполнялся ранее.
есть ситуации, где они могут выполнять ту же цель, но вот два примера, чтобы дать вам представление о том, что они используются для
используя break
итерация по списку значения и нарушение, когда мы видели число 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()
произведет следующий выход
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's end the function and "go back"
return
print "Found 3!"
loop3()
выход
0
1
2
3
break
используется, чтобы конец петли, а return
используется для завершения функции (и возврата значения).
есть еще continue
как средство для перехода к следующей итерации без завершения текущей.
return
иногда может использоваться как перерыв при циклировании, примером может быть простая функция поиска для поиска 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
) и двигается дальше:
>>> 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
завершит всю функцию, пока 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'
Return выйдет из определения в точной точке его вызова, передавая переменную после нее непосредственно из определения. Разрыв приведет только к концу цикла, в котором он находится.
def Foo():
return 6
print("This never gets printed")
bar = Foo()
это сделает бар равным шести. Код после инструкции return никогда не будет запущен.
перерыв пример:
def Loop():
while True:
print("Hi")
break
Loop()
это будет печатать только один раз, так как оператор break вызовет конец бесконечного цикл while.
давайте рассмотрим пример:
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", как только выполнение покидает область действия функции