从python函数返回值

从python函数返回值,python,Python,如果之前有人问过,首先要道歉。你很快就会看到,我是一个编码新手 我在下面简化了我要实现的目标 本质上,我想将两个变量传递到下面的函数中(fun1或fun2可以先启动)。一旦val1或val2达到0,我将返回备用值。显然,在下面的示例中,val2将始终达到0,fun1将首先启动 我想知道是否有办法将值返回到blah?我知道下面的例子将在两个函数之间创建一些荒谬的循环,但是如果没有广泛的if语句和单个函数,我不知道如何实现我想要的 任何帮助都将不胜感激 def fun1(val1, val2

如果之前有人问过,首先要道歉。你很快就会看到,我是一个编码新手

我在下面简化了我要实现的目标

本质上,我想将两个变量传递到下面的函数中(fun1或fun2可以先启动)。一旦val1或val2达到0,我将返回备用值。显然,在下面的示例中,val2将始终达到0,fun1将首先启动

我想知道是否有办法将值返回到blah?我知道下面的例子将在两个函数之间创建一些荒谬的循环,但是如果没有广泛的if语句和单个函数,我不知道如何实现我想要的

任何帮助都将不胜感激

    def fun1(val1, val2):
        val2 -= 1
        if val2 > 0:
            print "val2: ", val2
            fun2(val1, val2)
        else:
            print "val2 ended"
            return val1

    def fun2(val1, val2):
        val1 -= 1
        if val1 > 0:
            print "val1: ", val1
            fun1(val1, val2)
        else:
            print "val1 ended"
            return val2

    blah = fun1(10,8)
    print blah

确保您
返回fun2(…)
返回fun1(…)
。如果没有
return
s,Python函数默认返回
None

def fun1(val1, val2):
    val2 -= 1
    if val2 > 0:
        print "val2: ", val2
        return fun2(val1, val2)
    else:
        print "val2 ended"
        return val1

def fun2(val1, val2):
    val1 -= 1
    if val1 > 0:
        print "val1: ", val1
        return fun1(val1, val2)
    else:
        print "val1 ended"
        return val2

blah = fun1(10,8)
print blah

非常接近,你可以递归地这样做,它将返回调用函数返回的值,依此类推,直到它减到-1,然后它将返回最后的数字

def fun1(val1, val2):
    val2 -= 1
    if val2 > 0:
        print "val2: ", val2
        return fun2(val1, val2)
    else:
        print "val2 ended"
        return val1

def fun2(val1, val2):
    val1 -= 1
    if val1 > 0:
        print "val1: ", val1
        return fun1(val1, val2)
    else:
        print "val1 ended"
        return val2

blah = fun1(10,8)
print blah

这将非常容易地将结果存储在
blah

中!当您进行递归调用(调用其他函数)时,只需返回它们的值,而不是忽略它。像这样:

def fun1(val1, val2):
    val2 -= 1
    if val2 > 0:
        return fun2(val1, val2) # RETURN the result!
    else:
        print "val2 ended"
        return val1

def fun2(val1, val2):
    val1 -= 1
    if val1 > 0:
        return fun1(val1, val2) # RETURN the result!
    else:
        print "val1 ended"
        return val2

这样,无论您选择哪种代码路径,您都会在每一步返回一个结果到上面的下一个级别。

您的意思是在第5行返回fun2的结果吗?是的,这似乎就是我要做的wrong@user1887639没问题,记得接受回答:)如果你需要我解释更多,请告诉我