不同生成器之间的差异,“收益”和函数中返回的元组迭代

问题描述 投票:1回答:1

[从迭代中进行[[yield i]和return (i for i in range(10))之间的适当区别是什么?def generator1(): for i in range(10): yield i def generator2(): return (i for i in range(10))

例如,请参见这些函数generator1()generator2()的编写方式不同,但是都返回一个生成器。

IDLE的输出:-

>>> generator1() >>> <generator object generator1 at 0x107870468> >>> generator2() >>> <generator object generator2.<locals>.<genexpr> at 0x107870db0> >>> import sys >>> sys.getsizeof(generator1()) >>> 88 >>> sys.getsizeof(generator2()) >>> 88

我们可以说generator2()的LOC(代码行)比generator2少,而且对象的大小是相同的,我有些疑问。

    两个功能之间有什么区别?
  • <genexpr>在打印generator2()时意味着什么?
  • 哪个是更合适,更有效的生成器方式?
  • [从迭代得到收益i与收益之间的正确差是多少(对于i在range(10)中,i等于i)。 def generator1():适用于range(10)中的i:收益i def generator2():return(i for ...
  • python python-3.x generator
    1个回答
    3
    投票
    区别在于生成器的定义位置。 generator1是一个特殊的生成器函数,因为它包含yield语句。生成器功能始终返回生成器。调用generator1时定义了生成器。generator2是一个常规函数,该函数使用生成器表达式构造生成器,然后将其返回。当执行行(i for i in range(10))时定义了生成器。但是,如果添加更多逻辑,那么generator2可以返回其他任何内容,例如None。例如:
    © www.soinside.com 2019 - 2024. All rights reserved.