Python 发电机是可调用的吗?哪个是发电机?
生成器只是一个函数,它返回一个对象,您可以在该对象上进行下一步调用,这样每次调用它都会返回一些值,直到它引发StopIteration异常,表明所有值都已生成。这样的对象称为迭代器 我引用了他的话 以下是我想弄明白的:Python 发电机是可调用的吗?哪个是发电机?,python,generator,callable,Python,Generator,Callable,生成器只是一个函数,它返回一个对象,您可以在该对象上进行下一步调用,这样每次调用它都会返回一些值,直到它引发StopIteration异常,表明所有值都已生成。这样的对象称为迭代器 我引用了他的话 以下是我想弄明白的: 哪个是发电机myGen或myGen(6) 根据上面提到的报价,我认为生成器应该是myGen。而myGen(6)是返回的迭代器对象。但我真的不确定 当我尝试这样做时: >>> type(myGen) <type 'function'> >>
myGen(6)
根据上面提到的报价,我认为生成器应该是myGen
。而myGen(6)
是返回的迭代器对象。但我真的不确定>>> type(myGen)
<type 'function'>
>>> type(g) # <1>this is confusing me.
<type 'generator'>
>>> callable(g) # <2> g is not callable.
False
>>> callable(myGen)
True
>>> g is iter(g) # <3> so g should an iterable and an iterator
True # at the same time. And it will be passed as an argument
>>> for i in g: # to built-in function `next()` in a "for...in..." loop.
print i # (is that correct?)
6
7
>类型(myGen)
>>>类型(g)#这让我很困惑。
>>>可调用(g)#g不可调用。
假的
>>>可调用(myGen)
真的
>>>g是iter(g)#因此g应该是iteratable和iterator
没错,同时。它将作为一个论点被通过
>>>对于i in g:#到“for…in…”循环中的内置函数'next()'。
打印i#(对吗?)
6.
7.
和
,g
的类型是“generator”,它是不可调用的。
但是
这是怎么回事
当我在寻找答案时,我遇到了
那么,我可以这样说吗?定义函数myGen
时,myGen
是指可调用对象的名称,该对象是具有\u调用\u方法的类的实例。
在这种情况下,myGen
是一个生成器,myGen(6)
是调用myGen
时返回的迭代器
但是为什么type(g)
返回
?
这个返回的迭代器
对我来说也是可疑的,因为函数中没有返回
语句
这不是吗?1)myGen
是一个函数,当调用它时,它返回一个生成器对象——所以是的,myGen(6)
是一个生成器对象
2) 生成器提供\uuu iter\uuu
和next()
:不幸的是,术语令人困惑,因为“生成器”通常用于指函数或返回的迭代器,因此很难说一种用法更正确。警察说
仅当定义生成器函数时才使用yield语句,
并且仅用于生成器功能的主体中。使用收益率
函数定义中的语句足以导致
用于创建生成器函数而不是普通函数的定义
功能
调用生成器函数时,它返回一个称为
生成器迭代器,或更常见的生成器
警察说
注意,当上下文中的意图明确时,非限定名称
“发电机”可用于指发电机功能或发电机
生成器迭代器
如果您想明确区分,请使用“generator function”作为函数,使用“generator iterator”作为迭代器。+1表示编写良好。我相信generator是一个创建对象的函数。这个对象就是生成器,这个生成器就是一个可数。但是你可以调用函数,在运行中生成一个可迭代的变量,你可以对它进行迭代。。我仍然有点困惑为什么亚历克斯说发电机是可以调用的。有什么解释吗?
>>> type(myGen)
<type 'function'>
>>> type(g) # <1>this is confusing me.
<type 'generator'>
>>> callable(g) # <2> g is not callable.
False
>>> callable(myGen)
True
>>> g is iter(g) # <3> so g should an iterable and an iterator
True # at the same time. And it will be passed as an argument
>>> for i in g: # to built-in function `next()` in a "for...in..." loop.
print i # (is that correct?)
6
7