如果您想包装一个产生结果的方法,包装方法是否也需要产生结果,或者返回就足够了?

2024-10-06 11:30:53 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我想将一个方法包装到一个迭代器字典上,只需返回原始函数调用(产生)就足够了,还是需要以一种更显式的方式传播产生?例如。。。你知道吗

def iteritems(self):
    return self.__somedict.iteritems()

或者。。。你知道吗

def iteritems(self):
    for k, v in self.__somedict.iteritems():
        yield k, v

Tags: 方法inselfforreturn字典def方式
2条回答

一般来说,您不需要用yield来包装它,除非您打算做一些额外的工作。例如。如果要将每个值乘以2:

def times2iteritems(self):
    #note: it is not necessary to use yield here
    return ((k, v*2) for k, v in self.__somedict.iteritems()) 

这两种实现的区别在于,在第一种情况下,您向迭代器返回一个引用,而在第二种情况下,您执行管道化。你知道吗

如果您使用的是python3,那么就可以使用yield from。 见this。你知道吗

相关问题 更多 >