我想知道我们是否可以在python中做到这一点,让我们假设我们有3个不同的函数来处理数据 像这样:
def main():
def process(data):
.....
def process1(data):
.....
def process2(data):
.....
def run():
test = choice([process,process1,process2])
test(data)
run()
main()
我们可以选择一个随机函数来处理数据吗? 如果是,这是一个很好的方法吗?
谢谢!
答案 0 :(得分:4)
优秀的方法(在您的骨架代码中有一些过度简化)。既然你问了一个例子:
import random
def main():
def process(data):
return data + [0]
def process1(data):
return data + [9]
def process2(data):
return data + [7]
def run(data):
test = random.choice([process,process1,process2])
print test(data)
for i in range(7):
run([1, 2, 3])
main()
我已经做了7次循环,只是为了表明每个选择确实是随机的,即典型的输出可能是这样的:
[1, 2, 3, 7]
[1, 2, 3, 0]
[1, 2, 3, 0]
[1, 2, 3, 7]
[1, 2, 3, 0]
[1, 2, 3, 9]
[1, 2, 3, 9]
(当然每次都随机改变; - )。
答案 1 :(得分:3)
当然可以!
Python中的好东西,函数是第一类对象,可以这么简单的方式引用。
这意味着所有三种方法对传递给它们的参数都有相同的期望。 (这可能不言而喻)。
答案 2 :(得分:1)
答案 3 :(得分:0)
如果您将代码添加到顶部,您的代码将像您编写的一样工作:
from random import choice
或者,我认为像这样重写代码会稍微好一些:
import random
def main():
def process(data):
.....
def process1(data):
.....
def process2(data):
.....
def run():
test = random.choice([process,process1,process2])
test(data)
run()
main()
在代码中看到random.choice()
会清楚地说明发生了什么!