我应该为生成器表达式编写内部函数吗?

时间:2019-02-20 11:14:26

标签: python python-3.x generator

我经常发现我更喜欢写一个生成器表达式(例如,而不是创建一个空列表并附加到它之后)。但是,这意味着我需要将表达式放入函数中以进行调用。

当仅在代码的一部分中使用挂起函数或方法时,将其挂在别处会感到很混乱。

对于较短的生成器,我只需编写一个单行生成器表达式或列表推导即可,这很干净,没问题。

作为一个玩具示例:

def gen_test():
    for i in range(10):
        for j in range(20):
            yield i * j

def main():
    return sum(gen_test())

如果main()实际上是类中的一个方法,则将gen_test()提取到另一个函数或方法中会增加不必要的混乱,所以我很想:

def main():

    def gen_test():
        for i in range(10):
            for j in range(20):
                yield i * j

    return sum(gen_test())

这比附加到列表要快:

def main():

    vals = []
    for i in range(10):
        for j in range(20):
            vals.append(i * j)

    return sum(vals)

只有一个内部函数似乎很好,但是我经常为一个函数写一些〜4-6行生成器表达式。我还应该为每个函数编写一个内部函数吗?

0 个答案:

没有答案