随机执行一个函数

时间:2014-10-29 20:35:45

标签: python function random

考虑以下功能:

def a():
    print "a"
def b():
    print "b"

有没有办法选择一个随机运行的函数?我尝试使用:

random.choice([a(),b()])

但它返回两个函数,我只想让它返回一个函数。

2 个答案:

答案 0 :(得分:14)

仅调用选定的功能,而不是两者:

random.choice([a,b])()

以下是演示:

>>> import random
>>> def a():
...     print "a"
...
>>> def b():
...     print "b"
...
>>> random.choice([a,b])()
a
>>> random.choice([a,b])()
b
>>>

创建列表[a(),b()]时,您的旧代码称为两个,导致Python同时打印ab。之后,它告诉random.choice从列表[None, None] 1 中选择,它什么都不做。您可以从下面的演示中看到这一点:

>>> [a(),b()]
a
b
[None, None]
>>>

然而,新代码使用random.choice从列表[a,b]中随机选择一个函数对象:

>>> random.choice([a,b])
<function b at 0x01AFD970>
>>> random.choice([a,b])
<function a at 0x01AFD930>
>>>

然后只调用该函数。


1 默认情况下,函数返回None。由于ab缺少return语句,因此每个都返回None

答案 1 :(得分:0)

这是你想要的吗?

random.choice([a,b])()