如何以随机顺序运行函数?

NGu*_*yen 1 python random function python-3.x

我想用随机顺序运行函数.它看起来像"shuffle"函数,它会改变变量列表.

输入:

def a():
    print('a')

def b():
    print('b')

def c():
    print('c')

shuffle([a,b,c])
Run Code Online (Sandbox Code Playgroud)

这是我想要的输出:

a
b
c
Run Code Online (Sandbox Code Playgroud)

要么

a
c
b
Run Code Online (Sandbox Code Playgroud)

要么

c
b
a
Run Code Online (Sandbox Code Playgroud)

或者等如何以随机顺序运行函数?

the*_*eye 5

random.shuffle是一个就地操作.因此,您需要单独保留列表并将其随机播放.

functions = [a, b, c]
shuffle(functions)
Run Code Online (Sandbox Code Playgroud)

现在,函数被洗牌,你只需要执行它们

for func in functions:
    func()
Run Code Online (Sandbox Code Playgroud)

你可以把它存储在一个函数中并像这样做

def run_functions_in_random_order(*funcs):
    functions = list(funcs)
    shuffle(functions)
    for func in functions:
        func()

run_functions_in_random_order(a, b, c)
Run Code Online (Sandbox Code Playgroud)

或者你可以简单地使用闭包中的函数,就像这样

def run_functions_in_random_order(*funcs):
    def run():
        functions = list(funcs)
        shuffle(functions)
        for func in functions:
            func()
    return run

random_exec = run_functions_in_random_order(a, b, c)

random_exec()
random_exec()
random_exec()
Run Code Online (Sandbox Code Playgroud)