我是新手,不了解此练习中发生的事情:
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,该怎么办以及为什么会发生这种情况?
答案 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的两个赋值。
我认为将返回值更多地看作是程序的退出代码,而不是函数值。