如何使用random函数随机执行其他函数?技术问题求助
问题分析与解决方法
你的代码核心问题是误将函数调用结果存入元组,而非函数本身。function()和functionb()会在定义元组c时直接执行,完全没等到随机选择的步骤,自然无法实现随机运行的效果。
正确写法示例
使用random模块
import random def functiona(): print("执行functiona") def functionb(): print("执行functionb") def random_execute(): # 存储函数对象(不带括号,代表函数本身) func_tuple = (functiona, functionb) # 随机选择一个函数对象 chosen_func = random.SystemRandom().choice(func_tuple) # 调用选中的函数 chosen_func() # 测试执行 random_execute()
使用secrets模块
逻辑完全一致,仅替换随机选择的方法:
import secrets def functiona(): print("执行functiona") def functionb(): print("执行functionb") def random_execute(): func_tuple = (functiona, functionb) chosen_func = secrets.choice(func_tuple) chosen_func() random_execute()
关键说明
- 不带括号的函数名(如
functiona)是函数对象,代表这个函数本身,可以被传递、选择; - 带括号的
functiona()是函数调用,会立即执行函数并返回结果,无法用于后续的随机选择逻辑。
内容的提问来源于stack exchange,提问作者Pertigaan
相关产品推荐
相关产品推荐

