我有以下功能我必须运行...这是第3个。但是列表很长,它会继续增长。
### 1
try:
fr.ftp_link()
system.append('1')
except:
errors.append('1')
### 2
try:
md.daily_fetch_all_prices()
system.append('2')
except:
errors.append('2')
### 3
try:
RP.run_daily_RP()
system.append('3')
except:
errors.append('3')
我想让它成为一个循环。类似的东西:
for i in range(0,len(tasks)):
try:
execute(tasks[i]) <----- not real code, need help here
system.append(i)
except:
errors.append(i)
不确定tasks
会是什么样子以及如何执行它
答案 0 :(得分:1)
假设您只有不需要参数的函数,可以使用:
tasks = [fr.ftp_link, md.daily_fetch_all_prices, RP.run_daily_RP]
for i, task in enumerate(tasks, start=1):
try:
task()
system.append(str(i))
except:
errors.append(str(i))
在Python中,函数是第一类对象,因此您可以传递它们,将它们放在列表中等等,然后只需调用它们分配给它们的任何变量。
如果您有参数和/或关键字参数,则必须为任务寻找更复杂的数据结构,例如(function, list_of_args, dict_of_kwargs)
形式的元组列表
然后使用以下内容:
try:
function, args, kwargs = task
function(*args, **kwargs)
编辑:使用枚举进行索引。