我应该使用哪种模式在同一个循环中调用不同的函数?
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)
我经常使用同一组嵌套函数,在其中调用不同的函数。结构与此类似的东西:
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)