如何在Django中迭代一系列函数?

时间:2014-02-27 02:07:07

标签: python django

我有一个非常大的功能,我正在闯入较小的功能。它目前看起来像:

def big_function():
    # process1
    # process2
    # process3
    # process4
    # process5
    # process6
    # etc....

一旦我分解了这些功能,我就想逐个应用它们。而不是按顺序调用每个函数,有没有办法逐个迭代它们?类似的东西:

def iterate_through_functions:
    for function in functions:
        # run each process function in order

    def process1():
        # do something
    def process2():
        # do something
    def process3():
        # do something
    def process4():
        # do something
    def process5():
        # do something
    def process6():
        # do something
    def etc....():
        # do something

3 个答案:

答案 0 :(得分:3)

也许混淆是如何在迭代时调用函数?

def function1():
    print 'function1'

def function2():
    print 'function2'

functions = [function1, function2]

for function in functions:
    function()

答案 1 :(得分:0)

您可以使用locals()从列表中运行任意一组命名函数:

def x():
    print "x"
def y():
    print "y"
def z():
    print "z"

for fxn in ['x','y','z']:
     locals()[fxn]()

使用此方法,您应该能够开发可配置的流程列表。

编辑:

如果您知道函数的名称,这很好。如果你只想运行你收集的函数,你可以简单地将它们从列表中重复出来。

for fxn in [x,y,z]:
   fxn()

使用第一种方法的原因是您可以使用文本模式以编程方式构建函数列表,例如运行以'foo_'或'bar_'开头的所有函数。如果您只是收集回调,请使用第二种方法。

答案 2 :(得分:0)

Mshsayem的评论说你可以创建一个函数列表并迭代它是正确的。但是,为了便于阅读和调试,除了你动态生成函数并且你不知道它们中有多少函数之外,你几乎肯定会更好地明确地调用每个函数。