琢磨python3中yield

琢磨python3中yield_第1张图片
断点设置在第2行和第13行,debug时程序停留在13行,F5进入yield_test generator,定位到第2行, F6(单步调试)走到第3行,此时j = 0, F5进入函数call(),由于j = 0, call函数返回0,也就是走完第10行后,程序回到第3行,F5后进入第13行,其实就是call返回值赋值给第13行的i, 单步F6运行第11行和12行,在第12行 i = 0,该0就是 call返回的0值, 然后F6定位到了第4行, j = 0, 然后进入第2行,一直循环……, 第二行的for循环结束后运行第5行和第6行,程序运行结束
程序运行的结果如下:
琢磨python3中yield_第2张图片

yield的一个小用法:

list1= ['a','b','c']
list2 = ['1','2']
list3 = ['sf', 'wh']

def TestYield():
    for element1 in list1:
        yield element1
    for element2 in list2:
        yield element2
    for element3 in list3:
        yield element3

if __name__ == '__main__':
    ele = TestYield()
    for e in ele:
        print(e)

琢磨python3中yield_第3张图片

其实是想表达一个函数中可以不止一个yield, 对于多个列表可以逐一遍历

你可能感兴趣的:(Python)