s_list = ['a','b','c']
def generator_1(li):
yield li
counter = 0
for i in generator_1(s_list):
counter += 1
print(i)
print(counter)
# 输出: ['a','b','c'] 1
s_list = ['a','b','c']
def generator_2(li):
yield from li
counter = 0
for i in generator_2(s_list):
counter += 1
print(i)
print(counter)
# 输出:a b c 3
对比两个demo很明显可以看出,yield只是将普通函数变成生成器,yield一个值,迭代时可以得到一个值;而yield from是将后面的值变成一个可迭代对象,相当于如下操作:
s_list = ['a','b','c']
def generator_1(li):
for i in li:
yield i
counter = 0
for i in generator_1(s_list):
counter += 1
print(i)
print(counter)
# 输出:a b c 3
这样对比就很好理解了