调用函数的for循环是否会在调用任何函数之前完成?

时间:2015-07-09 05:34:17

标签: python

以下代码在for循环的每个循环上调用一个函数。是否保证在调用任何这些函数之前循环完成?

def testFunc():
    print('this is a test')

for i in range(5):
    print('test')
    testFunc()
print("Have any test funcs been called")

如果不是,testFunc实际上什么时候被调用? (我假设一旦功能完成,如果没有多处理/线程正在进行)

如果testFunc有阻止代码,它会暂停for,直到函数返回或执行?

1 个答案:

答案 0 :(得分:3)

这是实际发生的事情

您的代码:

def testFunc():
    print('this is a test')

for i in range(5):
    print('test')
    testFunc()
print("Have any test funcs been called")

实际代码:

for i in range(5):
    print('test')
    print('this is a test')
print("Have any test funcs been called")

因此可确保在功能未完成时循环无法完成

所以如果函数有某种暂停函数,那么循环将等到函数完成

等待功能     进口时间

def testFunc():
    for j in range(1,6):
        time.sleep(1)
        print("waiting for "+str(j) +" sec")
    print('this is a test')

for i in range(5):
    print('test')
    testFunc()
print("Have any test funcs been called")

实际代码:

import time
for i in range(5):
    print('test '+str(i))
    for j in range(1,6):
        time.sleep(1)
        print("waiting for "+str(j) +" sec")
print("Have any test funcs been called")

<强>输出:

test 0
waiting for 1 sec
waiting for 2 sec
waiting for 3 sec
waiting for 4 sec
waiting for 5 sec
test 1
waiting for 1 sec
waiting for 2 sec
waiting for 3 sec
waiting for 4 sec
waiting for 5 sec
test 2
waiting for 1 sec
waiting for 2 sec
waiting for 3 sec
waiting for 4 sec
waiting for 5 sec
test 3
waiting for 1 sec
waiting for 2 sec
waiting for 3 sec
waiting for 4 sec
waiting for 5 sec
test 4
waiting for 1 sec
waiting for 2 sec
waiting for 3 sec
waiting for 4 sec
waiting for 5 sec
Have any test funcs been called