Python怎么return后让循环继续运行?

如题所述

执行到return语句时,会退出函数,return之后的语句不再执行。

但将return语句放在try语句块中,是个例外,finally语句块中的语句依然会执行 。

举例:

正常函数:执行到该return语句时,函数终止,后边的语句不再执行 

def fun(): 

print 98 

return 'ok'

print 98 

try语句中:finally语句块中的语句依然会执行 。

def func(): 

try: 

print 98 

return 'ok' 

finally:

print 98

扩展资料:

return 语句会终止函数的执行,并返回函数的值。 

语法:

return value;

可选项 value指定返回的值。如果忽略则返回undefined。

在函数中 ,return 语句用于终止一个函数的执行,并返回值value。

如果value被省略或在函数内没有 return 语句被执行,则函数返回undefined。 

return语句的用法 :

1、中止函数的执行,并返回函数执行的结果。

语法为:return+表达式 

return 返回的值可以是任何数据类型

2、使用return阻止某些浏览器默认的行为。

语法为:return false;

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-28

return 会直接另函数返回,函数就运行结束了,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行。


如果你需要让循环继续执行,就不能return函数,而应该选用break或者continue。

break:跳出所在的当前整个循环,到外层代码继续执行。

continue:跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。

return:直接返回函数,所有该函数体内的代码(包括循环体)都不会再执行。


用下边的示例代码来解释:

def return_continue_break(type):
    if(not type in ["return", "continue", "break"]):
        print '"type" should be "return, continue, break".'
        return
    for j in range(0, 10):
        for i in range(0, 10):
            print "j_i: %d_%d" %(j, i)
            if(i > 3):
               if(type == "return"):
                   return
               elif(type == "continue"):
                   continue
               else:
                   break
            print "executed!"

if __name__ == '__main__':
    return_continue_break("break")
    return_continue_break("continue")
    return_continue_break("return")

BREAK的输出为:

j_i: 0_0
executed!
j_i: 0_1
executed!
j_i: 0_2
executed!
j_i: 0_3
executed!
j_i: 0_4
j_i: 1_0
executed!
j_i: 1_1
executed!
j_i: 1_2
executed!
j_i: 1_3
executed!
j_i: 1_4
j_i: 2_0
executed!
j_i: 2_1
executed!
j_i: 2_2
executed!
j_i: 2_3
executed!
j_i: 2_4
j_i: 3_0
executed!
j_i: 3_1
executed!
j_i: 3_2
executed!
j_i: 3_3
executed!
j_i: 3_4
j_i: 4_0
executed!
j_i: 4_1
executed!
j_i: 4_2
executed!
j_i: 4_3
executed!
j_i: 4_4
j_i: 5_0
executed!
j_i: 5_1
executed!
j_i: 5_2
executed!
j_i: 5_3
executed!
j_i: 5_4
j_i: 6_0
executed!
j_i: 6_1
executed!
j_i: 6_2
executed!
j_i: 6_3
executed!
j_i: 6_4
j_i: 7_0
executed!
j_i: 7_1
executed!
j_i: 7_2
executed!
j_i: 7_3
executed!
j_i: 7_4
j_i: 8_0
executed!
j_i: 8_1
executed!
j_i: 8_2
executed!
j_i: 8_3
executed!
j_i: 8_4
j_i: 9_0
executed!
j_i: 9_1
executed!
j_i: 9_2
executed!
j_i: 9_3
executed!
j_i: 9_4

RETURN的输出为:

j_i: 0_0
executed!
j_i: 0_1
executed!
j_i: 0_2
executed!
j_i: 0_3
executed!
j_i: 0_4

CONTINUE的输出为:

j_i: 0_0
executed!
j_i: 0_1
executed!
j_i: 0_2
executed!
j_i: 0_3
executed!
j_i: 0_4
j_i: 0_5
j_i: 0_6
j_i: 0_7
j_i: 0_8
j_i: 0_9
j_i: 1_0
executed!
j_i: 1_1
executed!
j_i: 1_2
executed!
j_i: 1_3
executed!
j_i: 1_4
j_i: 1_5
j_i: 1_6
j_i: 1_7
j_i: 1_8
j_i: 1_9
j_i: 2_0
executed!
j_i: 2_1
executed!
j_i: 2_2
executed!
j_i: 2_3
executed!
j_i: 2_4
j_i: 2_5
j_i: 2_6
j_i: 2_7
j_i: 2_8
j_i: 2_9
j_i: 3_0
executed!
j_i: 3_1
executed!
j_i: 3_2
executed!
j_i: 3_3
executed!
j_i: 3_4
j_i: 3_5
j_i: 3_6
j_i: 3_7
j_i: 3_8
j_i: 3_9
j_i: 4_0
executed!
j_i: 4_1
executed!
j_i: 4_2
executed!
j_i: 4_3
executed!
j_i: 4_4
j_i: 4_5
j_i: 4_6
j_i: 4_7
j_i: 4_8
j_i: 4_9
j_i: 5_0
executed!
j_i: 5_1
executed!
j_i: 5_2
executed!
j_i: 5_3
executed!
j_i: 5_4
j_i: 5_5
j_i: 5_6
j_i: 5_7
j_i: 5_8
j_i: 5_9
j_i: 6_0
executed!
j_i: 6_1
executed!
j_i: 6_2
executed!
j_i: 6_3
executed!
j_i: 6_4
j_i: 6_5
j_i: 6_6
j_i: 6_7
j_i: 6_8
j_i: 6_9
j_i: 7_0
executed!
j_i: 7_1
executed!
j_i: 7_2
executed!
j_i: 7_3
executed!
j_i: 7_4
j_i: 7_5
j_i: 7_6
j_i: 7_7
j_i: 7_8
j_i: 7_9
j_i: 8_0
executed!
j_i: 8_1
executed!
j_i: 8_2
executed!
j_i: 8_3
executed!
j_i: 8_4
j_i: 8_5
j_i: 8_6
j_i: 8_7
j_i: 8_8
j_i: 8_9
j_i: 9_0
executed!
j_i: 9_1
executed!
j_i: 9_2
executed!
j_i: 9_3
executed!
j_i: 9_4
j_i: 9_5
j_i: 9_6
j_i: 9_7
j_i: 9_8
j_i: 9_9

希望对你有帮助。

第2个回答  2017-08-02
return 会直接另函数返回,函数就运行结束了,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行。

如果你需要让循环继续执行,就不能return函数,而应该选用break或者continue。
break:跳出所在的当前整个循环,到外层代码继续执行。
continue:跳出本次循环,从下一个迭代继续运行循环,内层循环执行完毕,外层代码继续运行。
return:直接返回函数,所有该函数体内的代码(包括循环体)都不会再执行。

用下边的示例代码来解释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

def return_continue_break(type):
if(not type in ["return", "continue", "break"]):
print '"type" should be "return, continue, break".'
return
for j in range(0, 10):
for i in range(0, 10):
print "j_i: %d_%d" %(j, i)
if(i > 3):
if(type == "return"):
return
elif(type == "continue"):
continue
else:
break
print "executed!"

if __name__ == '__main__':
return_continue_break("break")
return_continue_break("continue")
return_continue_break("return")

BREAK的输出为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90

j_i: 0_0
executed!
j_i: 0_1
executed!
j_i: 0_2
executed!
j_i: 0_3
executed!
j_i: 0_4
j_i: 1_0
executed!
j_i: 1_1
executed!
j_i: 1_2
executed!
j_i: 1_3
executed!
j_i: 1_4
j_i: 2_0
executed!
j_i: 2_1
executed!
j_i: 2_2
executed!
j_i: 2_3
executed!
j_i: 2_4
j_i: 3_0
executed!
j_i: 3_1
executed!
j_i: 3_2
executed!
j_i: 3_3
executed!
j_i: 3_4
j_i: 4_0
executed!
j_i: 4_1
executed!
j_i: 4_2
executed!
j_i: 4_3
executed!
j_i: 4_4
j_i: 5_0
executed!
j_i: 5_1
executed!
j_i: 5_2
executed!
j_i: 5_3
executed!
j_i: 5_4
j_i: 6_0
executed!
j_i: 6_1
executed!
j_i: 6_2
executed!
j_i: 6_3
executed!
j_i: 6_4
j_i: 7_0
executed!
j_i: 7_1
executed!
j_i: 7_2
executed!
j_i: 7_3
executed!
j_i: 7_4
j_i: 8_0
executed!
j_i: 8_1
executed!
j_i: 8_2
executed!
j_i: 8_3
executed!
j_i: 8_4
j_i: 9_0
executed!
j_i: 9_1
executed!
j_i: 9_2
executed!
j_i: 9_3
executed!
j_i: 9_4

RETURN的输出为:

1
2
3
4
5
6
7
8
9

j_i: 0_0
executed!
j_i: 0_1
executed!
j_i: 0_2
executed!
j_i: 0_3
executed!
j_i: 0_4

CONTINUE的输出为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140

j_i: 0_0
executed!
j_i: 0_1
executed!
j_i: 0_2
executed!
j_i: 0_3
executed!
j_i: 0_4
j_i: 0_5
j_i: 0_6
j_i: 0_7
j_i: 0_8
j_i: 0_9
j_i: 1_0
executed!
j_i: 1_1
executed!
j_i: 1_2
executed!
j_i: 1_3
executed!
j_i: 1_4
j_i: 1_5
j_i: 1_6
j_i: 1_7
j_i: 1_8
j_i: 1_9
j_i: 2_0
executed!
j_i: 2_1
executed!
j_i: 2_2
executed!
j_i: 2_3
executed!
j_i: 2_4
j_i: 2_5
j_i: 2_6
j_i: 2_7
j_i: 2_8
j_i: 2_9
j_i: 3_0
executed!
j_i: 3_1
executed!
j_i: 3_2
executed!
j_i: 3_3
executed!
j_i: 3_4
j_i: 3_5
j_i: 3_6
j_i: 3_7
j_i: 3_8
j_i: 3_9
j_i: 4_0
executed!
j_i: 4_1
executed!
j_i: 4_2
executed!
j_i: 4_3
executed!
j_i: 4_4
j_i: 4_5
j_i: 4_6
j_i: 4_7
j_i: 4_8
j_i: 4_9
j_i: 5_0
executed!
j_i: 5_1
executed!
j_i: 5_2
executed!
j_i: 5_3
executed!
j_i: 5_4
j_i: 5_5
j_i: 5_6
j_i: 5_7
j_i: 5_8
j_i: 5_9
j_i: 6_0
executed!
j_i: 6_1
executed!
j_i: 6_2
executed!
j_i: 6_3
executed!
j_i: 6_4
j_i: 6_5
j_i: 6_6
j_i: 6_7
j_i: 6_8
j_i: 6_9
j_i: 7_0
executed!
j_i: 7_1
executed!
j_i: 7_2
executed!
j_i: 7_3
executed!
j_i: 7_4
j_i: 7_5
j_i: 7_6
j_i: 7_7
j_i: 7_8
j_i: 7_9
j_i: 8_0
executed!
j_i: 8_1
executed!
j_i: 8_2
executed!
j_i: 8_3
executed!
j_i: 8_4
j_i: 8_5
j_i: 8_6
j_i: 8_7
j_i: 8_8
j_i: 8_9
j_i: 9_0
executed!
j_i: 9_1
executed!
j_i: 9_2
executed!
j_i: 9_3
executed!
j_i: 9_4
j_i: 9_5
j_i: 9_6
j_i: 9_7
j_i: 9_8
j_i: 9_9
第3个回答  推荐于2016-09-20

你说的是continue吧,在循环内结束,然后进行下一次循环,下面是我写的例子,你看一下。

for i in range(10):
    #如果是2的倍数,那么不执行接下来的动作,你改成break试一下,会有别的情况
    if i % 2 == 0:
        continue
    #打印
    print i
1
3
5
7
9

本回答被提问者和网友采纳
第4个回答  2014-02-09
# encoding: utf-8

import os
import glob
import shutil

backuptarget = r'E:\backup'
srcpath = r'D:\workspace\Projects\DNCSS\python'

def target_mapper(fullpath):
''' 根据文件名映射目标文件名
path, fname = os.path.split(fullpath)
return os.path.join(backuptarget, fname)

for f in glob.glob(os.path.join(srcpath,'log', '*.log')):
try:
shutil.move(f, target_mapper(f))
except:
continue # 再循环中捕获到异常后要求继续即可

Python怎么return后让循环继续运行?
return 会直接另函数返回,函数就运行结束了,所有该函数体内的代码都不再执行了,所以该函数体内的循环也不可能再继续运行。如果你需要让循环继续执行,就不能return函数,而应该选用break或者continue。break:跳出所在的当前整个循环,到外层代码继续执行。continue:跳出本次循环,从下一个迭代继续运行循环...

python 怎么实现一个函数return后,自动执行另外一个函数
result = func(user) #recevie the native function call result print('exit the login')return result #return to caller return __decorator printdebug def login(user):print('in login:' + user)msg = "success" if user == "jatsz" else "fail"return msg #login with a return...

python中return函数的用法
1、return 语句用于退出函数,终止函数并将 return 值传回。实例:>>> def a(x,y):>>> if x==y:>>> return x,y 2、用于同一循环语句下,遇到第一个 return 后即返回。实例:```python>>> def fun(a,b):print (a)return aprint (b)return b>>> resunlt = fun(2,6)2`...

python中的return的用法?
1. 返回值:当函数执行到`return`语句时,会立即停止执行后续的代码,并将指定的值返回给函数调用者。2. 返回类型:`return`可以返回各种类型的值,包括数字、字符串、列表、字典等,甚至可以返回另一个函数。3. 无返回值:如果函数中没有`return`语句或`return`后没有指定值,函数将默认返回`None`。

python中的 return
在Python编程中,"return"语句扮演着关键角色。它的作用是当函数执行完毕时,将计算结果传递给程序的其他部分。通过使用return,函数不再继续执行,而是停止并返回给调用它的那部分代码一个特定的值。有返回值的函数具有可操作性,它们像一个信息载体,能够被其他积木块接收并利用。例如,设想这样的情景:py...

python中的return
Python中的`return`关键词是函数中非常重要的一个部分,用于返回值并结束函数执行。接下来我将对这个关键词进行解释:Python中的`return`用于定义函数的返回值。它标志着函数执行的结束,并将结果返回给调用者。一个函数可以返回任何类型的数据,如数字、字符串、列表等。当函数执行到`return`语句时,会...

Python函数定义时可以有多条return语句但每调用一次该函数只会只会执 ...
```python def foo(x):if x > 10:return "太大了"elif x < 5:return "太小了"else:return "刚刚好"```如果我们调用foo函数,输入参数x=8,那么输出结果就是"刚刚好",因为第三个return语句被执行了。如果输入参数x=15,那么输出结果就是"太大了",因为第一个return语句被执行了。需要...

python这个for函数 return1的时候什么才会实行?
如果num不是素数,那么一定有一个i使得num%i==0,循环在中途就会return 0 而如果num是素数,那么程序最终将会完成循环并执行return 1。

Python中的retur
在Python中,return语句需要跟随一个具体的值或表达式,如`return person`,而不是一个单独的语句。因此,直接在return后面写一个变量定义是不符合语法的。记住,return是用于返回函数执行结果的关键,而非定义变量。如果你想要在函数中返回某个变量的值,确保它是作为表达式出现的。如果你有任何疑问,欢迎...

return在python中用法
在Python中,return用法是:返回值、空返回。1、返回值:函数的主要目的是执行一些操作并返回结果。通过使用return,函数可以将计算后的结果返回给函数的调用者。返回的值可以是任何数据类型,例如整数、浮点数、字符串、元组、列表、字典等。2、空返回:有时函数并不需要返回具体的值,只需简单地结束执行...

相似回答