cat*_*use 0 python loops function
我正在尝试通过Python学习编程,我想知道是否可以获得函数的返回值而不是其他部分.这是代码:
让我们说,这是主要功能:
variable_a = 5
while variable_a > 0 :
input_user = raw_input(": ")
if input_user == "A":
deduct(variable_a)
variable_a = deduct(variable_a)
else:
exit(0)
Run Code Online (Sandbox Code Playgroud)
然后这是扣除功能:
def deduct(x):
print "Hello world!"
x = x - 1
return x
Run Code Online (Sandbox Code Playgroud)
会发生什么,它会进行计算并扣除,直到variable_a达到0.然而,"Hello world!" 得到打印两次,我认为因为variable_a = deduct(variable_a)(如果我错了,请纠正我).所以我在想,我可以只捕获deduct()的返回值而不是捕获其余的值吗?所以在这种情况下,在经过deduct()之后,variable_a只有一个普通值2(没有"Hello world!").
我错过了什么吗?:?
编者注:我删除了空行,因此可以粘贴到REPL.
"Hello world"的打印就是所谓的副作用 - 由函数产生的东西,它不会反映在返回值中.您要求的是如何调用该函数两次,一次产生副作用,一次捕获函数返回值.
实际上你根本不需要调用它两次 - 一次就足以产生两个结果.只需捕获一个且仅调用的返回值:
if input_user == "A":
variable_a = deduct(variable_a)
else:
Run Code Online (Sandbox Code Playgroud)