我试图实现一个函数发生器使用n次.我的想法是创建一个生成器对象,然后将该对象分配给另一个变量,并将重新分配的变量作为函数调用,例如:
def generator:
[...]
yield ...
for x in xrange(10):
function = generator
print function(50)
Run Code Online (Sandbox Code Playgroud)
当我调用print函数时,我发现function(50)没有调用它.相反,输出是:<generator object...>.我试图通过将此函数分配给生成器函数10次并使用此新变量作为生成器函数来尝试使用此函数.
我怎么能纠正这个?
Generator函数返回生成器对象.您需要list(gen)将它们转换为a list或只是迭代它们.
>>> def testFunc(num):
for i in range(10, num):
yield i
>>> testFunc(15)
<generator object testFunc at 0x02A18170>
>>> list(testFunc(15))
[10, 11, 12, 13, 14]
>>> for elem in testFunc(15):
print elem
10
11
12
13
14
Run Code Online (Sandbox Code Playgroud)
这个问题更多地解释了它:解释了Python yield关键字