yield和return

return:

import time
def sayHi2(**kargs):
    for i in range(10):
        time.sleep(1)
        return 'loop', i
result = sayHi2(name='Alex', age=29, phone=1355434)
print result
print result
print result
运行结果为:
('loop', 0)
('loop', 0)
('loop', 0)         ##这里return不会再往下执行,所以永远都是这个值

yield(只能在函数里用):

import time


def sayHi2(**kargs):
    for i in range(10):
        time.sleep(1)
        return 'loop', i
result = sayHi2(name='Alex', age=29, phone=1355434)

print result.next() 
print result.next() 
print result.next() 

运行结果为:
('loop', 0)
('loop', 1)
('loop', 2)

return 只返回一个最终结果。
yield返回的是程序执行中的各个时段的结果。

你可能感兴趣的:(yield和return)