随机执行一个函数
考虑以下这些函数:
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就会打印出a
和b
的结果。之后,它又让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
。因为a
和b
没有返回值的语句,所以它们各自返回None
。