Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python以循环的形式在模块中运行函数_Python - Fatal编程技术网

python以循环的形式在模块中运行函数

python以循环的形式在模块中运行函数,python,Python,我有以下功能,我必须运行。。。这是前三个。但这个名单很长,而且它将继续增长 ### 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.ru

我有以下功能,我必须运行。。。这是前三个。但这个名单很长,而且它将继续增长

### 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)
范围内的i(0,len(任务)):
尝试:

执行(任务[i])假设您只有不需要参数的函数,您可以使用:

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中,函数是一级对象,所以您可以传递它们,将它们放入列表中,等等,然后只调用分配给它们的任何变量

如果您有参数和/或关键字参数,您就必须为任务使用更复杂的数据结构,例如
形式的元组列表(函数、参数列表、参数列表)
然后进行以下操作:

try:
    function, args, kwargs = task
    function(*args, **kwargs)

编辑:使用枚举进行索引。

您的问题是什么?您有多种选择。在当前系统中,对于表示任务的内容,您甚至没有一个一致的接口,这似乎是一个糟糕的举动,但您可以轻松地创建一个函数列表并对其进行迭代,或者让任务实现一个特定的接口(例如,它们都有
。execute
)并使用
\uuuu子类\uuuu
对它们进行迭代。但就目前情况而言,这还不够具体,无法回答。简单得令人惊叹!谢谢