如何从函数返回值?

时间:2013-09-29 17:17:03

标签: python

是的,我已经阅读了很多这方面的例子,但我仍然没有得到它。

我正在学习Python,我制作了这个脚本,以帮助我理解如何'返回':

def random_number():
    random = 0
    random = (random + 5) * 10
    return random

def calc_pay_rise():
    payrise = 5
    random_number()
    payrise = payrise + random
    print payrise

calc_pay_rise()

我期待55的输出。 相反,我得到错误:'全局名称'随机'未定义'。我想我已经在random_number()函数中定义了random。

有没有办法将随机值传递给函数calc_pay_rise()?

5 个答案:

答案 0 :(得分:2)

试试这个:

payrise = payrise + random_number()

当你调用一个返回值的函数(在这种情况下是一个随机数)时,你应该对返回的值做一些事情。

另请注意,random中本地定义的变量random_number()无法从其他函数中“看到” - 除非您在本地声明一个新变量,但它可以包含您想要的任何名称。另一种说法是:

random = random_number()   # can be any name, I'm using `random` again
payrise = payrise + random

答案 1 :(得分:2)

calc_pay_rise中,您将丢弃random_number()电话返回的值;相反,做randmom = random_number()。您误解的是变量如何工作 - 一个函数中的局部变量(例如def random_number)在其他函数中不可见(例如def calc_pay_rise)。

def random_number():
    random = 0  # not sure what's the point of this
    return (random + 5) * 10

def calc_pay_rise():
    return 5 + random_number()

calc_pay_rise()

我还通过消除所有无效的东西来减少代码。

P.S。如果代码真的减少到绝对最小值,你就什么都没有了,因为在当前形式下,代码绝对没有任何东西:

def random_number():
    random = 0  # not sure what's the point of this
    return (random + 5) * 10
# is the same as 
def random_number():
    return 50

def calc_pay_rise():
    return 5 + random_number()
# is the same as
def calc_pay_rise():
    return 5 + 50  # because random_number always returns 50

calc_pay_rise()
# is really just the same as writing
5 + 50
# so you're not doing anything at all with that value, so you might as well eliminate the call, because it has no side effects either.

答案 2 :(得分:2)

你需要设置一个名为“random”的变量

所以你的calc_pay_rise函数应如下所示:

def calc_pay_rise():
    payrise = 5
    random = random_number()
    payrise = payrise + random
    print payrise

答案 3 :(得分:1)

def calc_pay_rise()中的变量“random”从未分配过。尝试:

def calc_pay_rise():
    payrise = 5
    random = random_number()
    payrise = payrise + random
    print payrise

答案 4 :(得分:1)

我不是python程序员,但这看起来像是一个范围问题。 您确实定义了变量“random”,但它的范围 - 代码中可见且可用的部分 - 仅限于您定义它的函数。在这种情况下, inside random_number()函数。

在calc_pay_rise()函数中可见 可见的是其他函数,random_number()本身。 这是您需要在添加中使用的内容。

这是返回值的基本点。