我应该使用哪种模式在同一个循环中调用不同的函数?

Which pattern should I use to call different functions in the same loops?

我经常使用同一组嵌套函数,在其中调用不同的函数。结构与此类似的东西:

data = 'example'
...
for i in range(10):
    # use data here
    another_data='another'
    for j in range(10):
        some_func(i, j, data)

...

for i in range(10):
    # use data here
    another_data='another'
    for j in range(10):
        another_func(i, j, another_data)

我应该使用哪种模式来避免应付代码?

我尝试使用装饰器,但我不知道如何将参数传递给在内部包装函数中创建的 some_func 并在调用 some_func.[=13= 时省略传递参数]

您可以将函数作为参数传递。不需要特殊的设计模式。

def some_func(i, j, data):
    pass

def another_func(i, j, data):
    pass

def process_data(data, processor_function):
    for i in range(10):
        # use data here
        another_data='another'
        for j in range(10):
            processor_func(i, j, data)

data = 'example'
process_data(data, some_func)
process_data(data, another_func)

您可以遍历函数列表:

funcs = [some_func, another_func]

data = 'example'
for i in range(10):
    for j in range(10):
        for func in funcs:
            func(i, j, data)

我终于用上了发电机:

def some_func(i, j, data):
    pass

def another_func(i, j, data):
    pass

def input_generator(data):
    for i in range(10):
        # use data here
        another_data='another'
        for j in range(10):
            yield i, j, data

data = 'example'

for i, j, data2 in input_generator(data):
    some_func(i, j, data2)
    another_func(i, j, data2)