【问题标题】:use random functions (python)使用随机函数(python)
【发布时间】:2010-12-17 13:17:36
【问题描述】:

我想知道我们是否可以在 python 中做到这一点,假设我们有 3 个不同的函数来处理数据 像这样:

def main():
  def process(data):
     .....
  def process1(data):
     .....
  def process2(data):
     .....
  def run():
     test = choice([process,process1,process2])
     test(data)
  run()

main()

我们可以选择一个随机函数来处理数据吗? 如果是,这是一个好方法吗?

谢谢!

【问题讨论】:

  • 它应该可以工作,所以如果您的真实代码无法正常工作,那么我建议您提供一个简短、完整的示例,您认为应该可以工作,但不能。
  • 你想念from random import choice 吗?
  • 以上工作。你有什么问题?
  • 太棒了!我现在的问题是我想打印使用哪个: .... test = random.choice([process,process1,process2]) print "using %s"% (test) .... using 我如何删除“... at 0x1775410>” 谢谢!
  • 试试print "using %s" % test.__name__

标签: python function random


【解决方案1】:

没错!

Python 的好处在于,函数是一流的对象,可以以如此简单的方式引用。

这意味着所有三个方法对于传递给它们的参数都有相同的期望。 (这可能不言而喻)。

【讨论】:

  • 你的意思是function,对吧?方法是一种功能。在OP的代码中process1、process2、process3是函数。
  • 不幸的是,它不适用于我的示例,您能提供一个吗?谢谢!
  • @lost-theory,对!我相应地进行了编辑。 function 在这里是更通用和更合适的术语(尽管这种技术对于绑定methods 也适用,正如你所说的那样是一种特殊的函数)
【解决方案2】:

优秀的方法(在您的框架代码中消除了一些过度简化)。既然你问一个例子:

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]

(当然,每次都是随机变化的;-)。

【讨论】:

  • 太棒了!我现在的问题是我想打印使用哪个: .... test = random.choice([process,process1,process2]) print "using %s"% (test) .... using 处,我怎样才能删除“... at 0x1775410>” 谢谢!
  • print "using", test.__name__
【解决方案3】:

如果您将其添加到顶部,您的代码将像您编写的那样工作:

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() 可以清楚地知道发生了什么!

【讨论】:

    【解决方案4】:

    在python中使用随机数模块即可。

    random.choice(seq)
    

    这将为您提供序列中的随机项目。

    http://docs.python.org/library/random.html

    【讨论】:

      猜你喜欢
      • 2015-04-26
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多