python中return和break之间的区别是什么? 请解释一下它们在循环和函数中的确切作用? 谢谢
答案 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?"