functools.partial和generator

Rue*_*eck 5 python generator functools

我正在尝试执行以下操作:

import functools

class TestClass():
    def method(self, n):
        for i in xrange(n):
            yield i

# This works 
for x in TestClass().method(10):
    print x

# This gets a TypeError: functools.partial object not iterable
for x in functools.partial(TestClass().method, 10):
    print x
Run Code Online (Sandbox Code Playgroud)

那有什么不对?

Kil*_*nDS 7

functools.partial创建一个对象,其行为类似于一个新函数,它模仿旧函数并使用一些参数"冻结".所以你必须实际调用这个新函数来获得相同的输出:

for x in functools.partial(TestClass().method, 10)():
    print x
Run Code Online (Sandbox Code Playgroud)