如何从Python中的函数获取返回值?

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.

Mar*_*som 7

"Hello world"的打印就是所谓的副作用 - 由函数产生的东西,它不会反映在返回值中.您要求的是如何调用该函数两次,一次产生副作用,一次捕获函数返回值.

实际上你根本不需要调用它两次 - 一次就足以产生两个结果.只需捕获一个且仅调用的返回值:

if input_user == "A":
    variable_a = deduct(variable_a)
else: 
Run Code Online (Sandbox Code Playgroud)