px0*_*x06 5 python random function
考虑以下功能:
def a():
print "a"
def b():
print "b"
Run Code Online (Sandbox Code Playgroud)
有没有办法选择一个随机运行的函数?我试过用:
random.choice([a(),b()])
Run Code Online (Sandbox Code Playgroud)
但它返回两个函数,我只想让它返回一个函数.
iCo*_*dez 14
仅调用所选功能,而不是两者:
random.choice([a,b])()
Run Code Online (Sandbox Code Playgroud)
以下是演示:
>>> import random
>>> def a():
... print "a"
...
>>> def b():
... print "b"
...
>>> random.choice([a,b])()
a
>>> random.choice([a,b])()
b
>>>
Run Code Online (Sandbox Code Playgroud)
您的旧代码在创建列表时调用了这两个函数[a(),b()]
,导致Python同时打印a
和b
.之后,它告诉random.choice
从列表[None, None]
1中选择,它什么都不做.您可以从下面的演示中看到:
>>> [a(),b()]
a
b
[None, None]
>>>
Run Code Online (Sandbox Code Playgroud)
然而,新代码用于random.choice
从列表中随机选择一个函数对象[a,b]
:
>>> random.choice([a,b])
<function b at 0x01AFD970>
>>> random.choice([a,b])
<function a at 0x01AFD930>
>>>
Run Code Online (Sandbox Code Playgroud)
然后它只调用该函数.
1None
默认情况下返回功能.既然a
又b
缺乏return语句,它们都会返回None
.