如何在Python中打乱命令的执行顺序?
如何打乱命令的执行顺序?
你的示例代码存在一个关键问题:a = [print("something"),print("another_thing")] 这一行会立刻执行两个print语句,把它们的返回值(都是None)存入列表,后续的random.shuffle(a)只是打乱两个None的顺序,根本没改变命令的执行顺序。
要真正打乱命令的执行顺序,你需要把要执行的操作封装成可调用对象(比如函数、lambda表达式)存入列表,等打乱后再逐个调用:
基础写法(无参数命令)
import random # 把要执行的操作封装成lambda存入列表 commands = [ lambda: print("something"), lambda: print("another_thing") ] # 打乱列表顺序 random.shuffle(commands) # 逐个执行命令 for cmd in commands: cmd()
带参数命令的写法
如果需要执行带参数的命令,可以用functools.partial来封装:
import random from functools import partial def print_msg(msg): print(msg) commands = [ partial(print_msg, "something"), partial(print_msg, "another_thing") ] random.shuffle(commands) for cmd in commands: cmd()
这样每次运行,两个print的输出顺序都是随机的,真正实现了打乱命令执行顺序的需求。
内容的提问来源于stack exchange,提问作者Batuhan Işık
相关产品推荐
相关产品推荐

