python中return和break之间有什么区别?

时间:2015-03-04 12:50:44

标签: python function loops

python中return和break之间的区别是什么? 请解释一下它们在循环和函数中的确切作用? 谢谢

6 个答案:

答案 0 :(得分:18)

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

答案 1 :(得分:12)

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

详细了解简单陈述here

在指令级别,您可以看到语句执行不同的操作:

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  

答案 2 :(得分:4)

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'   

答案 3 :(得分:0)

返回将在调用它的确切位置退出定义,将变量直接传递出定义之后。中断只会导致它所在的循环结束。

例如

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

bar = Foo()

这将使条形等于六。 return语句后的代码永远不会运行。

休息示例:

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

Loop()

这将只打印一次,因为break语句将导致无限while循环结束。

答案 4 :(得分:0)

让我们来看一个例子:

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'开始迭代到了'。在我们的例子中,一到九

         if not n % 2: continue
如果' n'

停止此迭代可以被两个整除

         elif not n % 3: break

如果n可以被三个整除

,则保留此迭代
    return n

我们的功能' f' "返回" ' n'

的价值
print((f(1, 10)))

' f(1,10)'打印3,因为它评估为' n'一旦执行离开了函数的范围

答案 5 :(得分:0)

我将尝试通过一个示例进行说明:

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