如何以随机顺序执行多个函数?

2024-09-25 16:18:50 发布

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

我定义了四个函数。这些函数返回相同的变量,但参数不同。你知道吗

下面是一个简单的例子:

def func1(studentID, homework1, T1, score):
    if len(homework1) > T1:
        score[studentID] = 1
    else:
        score[studentID] = 0
    return score

def func2(studentID, homework2, T2, attendance, score):
    if len(homework2) > T2 and attendance == 1:
        score[studentID] = 1
    else:
        score[studentID] = 0
    return score

现在我需要按随机顺序执行这些函数,即有时先执行func1,然后执行func2,有时则不然。我只知道如何在没有参数的情况下执行此操作,并返回如下结果:

import random
functions = [func1, func2]
random.shuffle(functions)
for i in functions:
    i()

但不知道如何使用参数和返回。你知道吗


Tags: 函数参数lenreturnifdeffunctionselse
2条回答

可以使用lambda绑定参数:

import random
param1 = 123
param2 = 456
functions = [lambda : func1(param1), lambda : func2(param2)]
random.shuffle(functions)
results = [ i() for i in functions ]

您可以制作一个参数列表,每个索引都与函数列表相关,或者定义一个更方便的字典

import random
# define argument lists
params_list1 = [1, "a", [1,2,3]]
params_list2 = ["b", "a"]

# dictionary answer
dictionary = {'func1':[func1,params_list1], 'func2':[func2,param_list2]}
for f, params in random.shuffle(dictionary.values()):
    f(*params)

相关问题 更多 >