随机执行一个函数

7 投票
2 回答
3314 浏览
提问于 2025-04-30 11:34

考虑以下这些函数:

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

有没有办法随机选择一个函数来运行呢?我试过用:

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

但是它返回了两个函数,我只想要返回一个函数。

暂无标签

2 个回答

0

这就是你想要的吗?

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

16

只调用选中的函数,而不是两个都调用:

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没有返回值的语句,所以它们各自返回None

撰写回答