有没有更好的方法来运行随机选择的功能?

mic*_*pri 2 python eval function

我做了一个Tic-Tac-Toe游戏,对于我制作的AI中的一个,它选择一个用引号括起来的随机函数(所以它是一个字符串)并调用eval()它.这是它的样子:

import random

func_list = ["func1()", "func2()", "func3()"]

eval(random.choice(func_list))
Run Code Online (Sandbox Code Playgroud)

我真的不喜欢使用eval()(不太确定为什么,只是看起来不对).我不喜欢将列表中的函数作为字符串.有没有更好的方法呢?

Sha*_*ank 9

函数是Python中的第一类对象.这意味着您可以传递它们,并将它们存储在列表中,就像任何其他对象一样.

那么为什么不这样做呢?

func_list = [func1, func2, func3]
random.choice(func_list)()
Run Code Online (Sandbox Code Playgroud)