从这个线程: 如何通过选择随机变量在Python中执行随机事件?
我了解到可以将一些函数放入列表中,并通过使用random.choice(),调用其中一个函数来生成随机事件.
我有兴趣这样做,因为我正在编写一个相当小的基于文本的游戏,作为初学者教程的一部分.
但是当我写下我认为会给我想要的结果时(也就是说,只调用其中一个函数并打印它的字符串:
import random
def func_test_1():
print "This is func_test_1."
def func_test_2():
print "This is func_test_2."
def func_test_3():
print "This is func_test_3."
my_list = [func_test_1(), func_test_2(), func_test_3()]
random.choice(my_list)
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
C:\Windows\system32\cmd.exe /c python random_func.py
This is func_test_1.
This is func_test_2.
This is func_test_3.
Hit any key to close this window...
Run Code Online (Sandbox Code Playgroud)
这三个函数都被调用和打印.
有人可以用正确的语法帮我解决这个问题吗?谢谢.
Phi*_*ipp 38
使用括号,您可以调用该函数.你想要的是将它们分配到列表并稍后调用选择:
my_list = [func_test_1, func_test_2, func_test_3]
random.choice(my_list)()
Run Code Online (Sandbox Code Playgroud)
首先,当您my_list = [func_test_1(), func_test_2(), func_test_3()]存储功能结果时,而不是列表中的功能.做my_list = [func_test_1, func_test_2, func_test_3]代替,然后调用随机函数.像这样:
my_list = [func_test_1, func_test_2, func_test_3]
random.choice(my_list)()
Run Code Online (Sandbox Code Playgroud)
函数是Python中的对象.
如果你只是通过他们的名字引用它们(没有括号,它实际上调用了函数!),你可以引用底层的函数对象.您可以重新绑定它们,检查它们或在列表中存储对它们的引用.
mylist = [test_func_1,test_func_2,..]
此时,没有执行任何功能.然后,您可以使用random.choice从列表中选择一个函数并使用()以下命令调用它:
mylist[0]() 调用列表中的第一个函数random.choice(mylist)() 调用随机函数