Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 收益率和回报率的区别是什么?_Python - Fatal编程技术网

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
,程序将挂起。