为什么下面会遇到无限递归错误?

问题描述 投票:0回答:1

我有以下代码:

def aoeu():
    r = lambda: 5
    s = r
    r = lambda: s() * 6
    s = r
    r = lambda: s() // 2
    print(r())

运行时,出现错误:

  File "/Users/nyap/tasks/spreadsheet/spreadsheet/aoeu.py", line 10, in <lambda>
    r = lambda: s() * 6
                ^^^
  [Previous line repeated 993 more times]
RecursionError: maximum recursion depth exceeded

使用

s = copy.deepcopy(r)
时也会发生同样的事情,甚至:

    def s():
        return r()

和:

    def s(r):
        return r()

为什么?有没有办法修复它,这样由于实际代码中存在循环,因此在不引入另一个变量的情况下就不会发生这种情况?

这是使用 python-3.12.6

python-3.x
1个回答
0
投票

也许我们应该让变量(r,s)的名称更清楚。

def aoeu():
    # r = lambda: 5
    # s = r
    # r = lambda: s() * 6
    # s = r
    # r = lambda: s() // 2

    s1 = lambda: 5
    s2 = lambda: s1() * 6
    r = lambda: s2() // 2

    print(r())
© www.soinside.com 2019 - 2024. All rights reserved.