一个函数的返回值乘以另一个函数

时间:2020-11-08 05:51:51

标签: python function

我是新手,不了解此练习中发生的事情:

def foo():
    print("Hello from within foo")
    return 2
def bar():
    return 10*foo()
print foo()
print bar()

输出:

Hello from within Foo
2
Hello from within Foo
20

在'bar'函数中,我尝试将10与foo函数的值(即2)相乘。问题是,当我打印bar函数时,它会打印foo函数和20的文本。我只想在打印bar函数时得到20,该怎么办以及为什么会发生这种情况?

2 个答案:

答案 0 :(得分:2)

问题是因为您已经定义了 foo()函数来打印文本,所以无论何时在 bar 函数中调用它,它仍然会在foo函数。

如果您只希望 bar()函数返回 20 并且不打印任何文本,则需要删除打印 foo()函数中的一行。像这样

io.to('room1').emit('roomJoined', 'SERVER',' has connected to this room');

答案 1 :(得分:1)

函数只是调用时将执行的一段代码。一旦在函数内完成return语句,返回值将“替换”函数调用,但要到那个阶段,您必须在return语句之前执行所有代码。

一旦函数中的代码到达return语句,函数就会停止执行。您不能再次更改返回值。例如

def hello():
    y = 1
    y = y + 1
    x = 1
    return x
    x = 2
    return x

将始终返回1,并且即使我们从不使用它们,也将始终执行对y的两个赋值。

我认为将返回值更多地看作是程序的退出代码,而不是函数值。