2024-10-06 11:30:53 发布
网友
如果我想将一个方法包装到一个迭代器字典上,只需返回原始函数调用(产生)就足够了,还是需要以一种更显式的方式传播产生?例如。。。你知道吗
def iteritems(self): return self.__somedict.iteritems()
或者。。。你知道吗
def iteritems(self): for k, v in self.__somedict.iteritems(): yield k, v
一般来说,您不需要用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。你知道吗
yield from
一般来说,您不需要用yield来包装它,除非您打算做一些额外的工作。例如。如果要将每个值乘以2:
这两种实现的区别在于,在第一种情况下,您向迭代器返回一个引用,而在第二种情况下,您执行管道化。你知道吗
如果您使用的是python3,那么就可以使用
yield from
。 见this。你知道吗相关问题 更多 >
编程相关推荐