【发布时间】:2021-03-16 07:04:51
【问题描述】:
我很惊讶这个断言失败了:
x = 42
x = lambda: x
assert x() == 42
似乎x 最终递归引用了自己,因此x()、x()() 等都是函数。
用来解析这个的规则是什么,这个记录在哪里?
顺便说一下(上面给出的并不意外),x 的原始值在 lambda 定义之后没有留下任何引用:
class X:
def __del__(self): print('deleting')
x = X()
x = lambda: x # 'deleting' is printed here
【问题讨论】:
-
就像
def x(): return x。