Python. 有没有一种方法可以随机选择一个函数?

3
我希望将每个Callout存储在一个def函数中 例如:
def shooting():
    print("bang bang")

def mugging():
    print("money, now!")
callout = ['shooting', 'mugging']
randomthing = random.choice(callout)
print(randomthing + "()")

每个召唤都存储在def函数中。然后在callout和randomthing中随机化。接下来,(我知道这部分有误)我希望它以50/50的几率调用mugging()或shooing()。


@jhpratt,你不需要使用“lambda”。lambda只是定义一个函数,和def一样;无论如何定义,你都可以拥有一个函数数组。 - abarnert
2
只需将您的代码更改为 callout = [shooting, mugging],存储实际函数而不是它们的名称。然后,您只需执行 randomthing() 即可调用您选择的任何函数。 - abarnert
1个回答

7
你做得差不多了!只需要移除引号,并直接存储函数名即可。在Python中,函数就像变量一样:
callout = [shooting, mugging]
randomthing = random.choice(callout)
print(randomthing())

这似乎是最好的解决方案!但现在它似乎在双感叹号下面添加了单词“None”。示例:双感叹号 None - pTinosq
@T.ps 这是因为你的每个函数都是print,然后没有返回任何东西。如果你没有返回任何东西,默认值就是None。所以当你打印 print(randomthing()) 时,它将打印出 None。你可能想要做的是改变你的函数来 返回 一个字符串,而不是 打印 它。 - abarnert
我该如何修复这个问题? - pTinosq
你可以将函数更改为return 'bang bang'return 'money, now!'。或者,你可以调用randomthing()而不是print(randomthing()) - dashiell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接