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

Python 如果您想要包装一个产生结果的方法,那么包装器方法是否也需要产生结果,或者返回就足够了?,python,dictionary,iterator,Python,Dictionary,Iterator,如果我想在迭代器字典上包装一个方法,只返回原始函数调用(产生)就足够了,还是需要以更明确的方式传播产生的结果?例如 def iteritems(self): return self.__somedict.iteritems() 或者 一般来说,你不需要用收益率来包装它,除非你打算做一些额外的工作。例如。如果要将每个值乘以2: def times2iteritems(self): #note: it is not necessary to use yield here r

如果我想在迭代器字典上包装一个方法,只返回原始函数调用(产生)就足够了,还是需要以更明确的方式传播产生的结果?例如

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


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

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

这两种实现的区别在于,在第一种情况下,您向迭代器返回一个引用,而在第二种情况下,您执行管道化,,一般来说,您不需要对其进行打包,除非您打算做一些额外的工作。例如。如果要将每个值乘以2:

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

这两种实现的区别在于,在第一种情况下,您向迭代器返回一个引用,而在第二种情况下,您执行管道化,,一般来说,您不需要对其进行打包,除非您打算做一些额外的工作。例如。如果要将每个值乘以2:

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

这两种实现的区别在于,在第一种情况下,您向迭代器返回一个引用,而在第二种情况下,您执行管道化,,一般来说,您不需要对其进行打包,除非您打算做一些额外的工作。例如。如果要将每个值乘以2:

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

这两种实现的不同之处在于,在第一种情况下,您向迭代器返回一个引用,而在第二种情况下,您执行管道化,如果您使用的是python 3,那么您可以使用
生成。
请参阅。

如果您使用的是python 3,那么您可以使用
yield from

请参阅。

如果您使用的是python 3,那么您可以使用
yield from

请参阅。

如果您使用的是python 3,那么您可以使用
yield from

看。

你不必,但你可以。你不必,但你可以。你不必,但你可以。你不必,但你可以。