Python 如何使用函数本身返回的值重复函数?

Python 如何使用函数本身返回的值重复函数?,python,function,repeat,Python,Function,Repeat,我有一个返回两个值的函数,我想对这些返回值重复相同的操作 fPoint = getFirstPoint (x, y, currCalcX, currCalcY) newCurrValX, newCurrValY = fPoint print(newCurrValX, newCurrValY) 上述函数返回如下值: 250.0 60.0 我想在currCalcX和currCalcY上应用这些值,并重复函数getFirstPoint(),直到返回None。使用循环: # dummy imple

我有一个返回两个值的函数,我想对这些返回值重复相同的操作

fPoint = getFirstPoint (x, y, currCalcX, currCalcY) 
newCurrValX, newCurrValY = fPoint
print(newCurrValX, newCurrValY)
上述函数返回如下值:

250.0 60.0
我想在currCalcX和currCalcY上应用这些值,并重复函数
getFirstPoint()
,直到返回
None

使用循环:

# dummy implementation - returns None if a or b is 0, ignores x and y
def getFirstPoint(x,y,a,b):
    if a==0 or b==0:
        return None
    return a-1,b-1

x, y, currCalcX, currCalcY = 0,0,4,4  # add sensible values here

while True:
    fPoint = getFirstPoint (x, y, currCalcX, currCalcY) 
    if fPoint is None:
        print("Done")
        break
    currCalcX, currCalcY = fPoint
    print(currCalcX, currCalcY)
输出:

3 3
2 2
1 1
0 0
Done

这里不需要递归——它不需要在函数堆栈帧上堆叠。如果需要太多的递归(而且根本不需要),您可能会达到递归限制-有关递归限制的解释,请参阅。

您需要递归,请参阅:好的,我会研究它。谢谢,让我试试。不起作用。我一次又一次地得到相同的值。函数似乎没有使用更新的值运行。@ShyamMohan修复了输入错误-您需要用结果替换
currCalcX,currCalcY
的值-不创建
newCalcX,newCalcY
,该函数会给出错误
UnboundLocalError:赋值前引用的局部变量“currCalcX”
@Shy完全运行的示例已编辑。代码中出现的错误可能是因为在函数中使用之前未设置
'currCalcX'