【问题标题】:Getting a particular value from a function从函数中获取特定值
【发布时间】:2014-03-27 22:31:02
【问题描述】:

我正在尝试从处理多个值的函数中提取特定值。

我的简化示例:

def func(x, y):
    a = ran(0,10)         #creates random integer
    b = ran(0,10)

    return a*x + b*y
    print a*x + b*y

因此,如果我想在其他函数中使用在func() 中创建的ab 的值,我将如何提取它们?

【问题讨论】:

  • 有什么理由不应该在外部声明它们并通过全局等来使用它们吗?
  • @Nanashi 我不确定你的意思;我对编程很陌生。
  • 如果你想重用这些值,在函数外部声明它们会简单得多,除非有特定原因你希望它们在函数本身内部创建。检查两位的答案。 :)
  • @PPG 一般来说,Nanashi 所指的是变量作用域,对于你探索的任何语言,你都会学到很多东西。跨度>

标签: python function random return-value extract


【解决方案1】:

您不需要提取它们;你只需要将它们保存在某个地方。

如果这是模块中的顶级函数,请考虑模块变量:

import random
rand1 = random.randint(0, 10)
rand2 = random.randint(0, 10)

def f(x, y):
    result = rand1*x + rand2*y
    print result
    return result

但这些看起来可疑相关,所以它们可能属于一个类?

class YourClass(object):

    def __init__(self):
        self.rand1 = random.randint(0, 10)
        self.rand2 = random.randint(0, 10)

    def your_func_as_a_method(self, x, y):
        result = self.rand1*x + self.rand2*y
        print result
        return result

当然,您也可以将它们作为函数返回定义的一部分:

def f(x, y):
    rand1 = random.randint(0, 10)
    rand2 = random.randint(0, 10)
    result = rand1*x + rand2*y
    print result
    return (result, rand1, rand2)

fxy, a, b = f(x, y)

【讨论】:

  • 优秀的答案。涵盖了我现在和以后需要知道的一切。谢谢。
【解决方案2】:

一种方法是退货:

return (a*x + b*y, a, b)

你可以调用你的函数:

(result, a, b) = func(x,y)

【讨论】:

  • 这个答案也值得思考。从函数中返回一个元组是非常pythonic。
猜你喜欢
  • 1970-01-01
  • 2018-03-07
  • 2023-01-16
  • 2015-06-13
  • 2013-10-22
  • 1970-01-01
  • 2019-03-30
相关资源
最近更新 更多