Python 收益率和回报率的区别是什么?
我已经读到,Python 收益率和回报率的区别是什么?,python,Python,我已经读到,yield是一个生成器,但我真的看不出它意味着什么,因为以下函数的输出完全相同: def yieldFunction(number): for x in range(number) : yield x*2 def returnFunction(number): output=[] for x in range(number) : output.append(x*2) return output for x in yi
yield
是一个生成器,但我真的看不出它意味着什么,因为以下函数的输出完全相同:
def yieldFunction(number):
for x in range(number) :
yield x*2
def returnFunction(number):
output=[]
for x in range(number) :
output.append(x*2)
return output
for x in yieldFunction(10):
print(x)
print('-'*20)
for x in returnFunction(10):
print(x)
输出:
0
2.
4.
6.
8.
10
12
14
16
十八
0
2.
4.
6.
8.
10
12
14
16
十八
在这种情况下,一个比另一个更可取?使用
yield
您使用的内存更少-尝试运行第二个具有非常大值的示例,并将使用大量内存。而且,yield
不必等待可能需要一些时间的完整列表。谢谢,非常具有说明性的建议,只要尝试一下,就可以看到结果,而为True:
在yieldFunction
中可以创建无休止的生成器-您仍然可以在循环中使用它,或者使用it=yieldFunction(),value=next(it)
。当为True时使用:
在returnFunction
中,它将永远不会结束函数returnFunction
,程序将挂起。