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

2024-05-08 01:32:22 发布

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

我有一个非常大的函数,我正在分解成更小的函数。它现在看起来像:

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

Tags: 函数indefetcfunctionfunctionsdosomething
3条回答

也许困惑在于迭代时如何调用函数?你知道吗

def function1():
    print 'function1'

def function2():
    print 'function2'

functions = [function1, function2]

for function in functions:
    function()

可以使用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()

使用第一种方法的原因是,您可以使用文本模式(如run all functions)以编程方式构建函数列表,这些文本模式以“foo”或“bar”开头。如果您只是收集回调,请使用第二种方法。你知道吗

Mshsayem的评论是正确的,您只需创建一个函数列表并遍历它。然而,为了可读性和调试的缘故,几乎可以肯定的是,最好只显式地调用每个函数,除非您动态地生成函数,并且不知道会有多少个函数。你知道吗

相关问题 更多 >