关于比较 == 函数和内存位置的说明

Clarification on comparing == functions and memory location

关于下面的代码片段,我有些 questions/clarifications 想问。谢谢!

cube_a = 2 ** 3
cube_b = 2 ** 3
cube_c = lambda x: x ** 3
cube_d = lambda x: x ** 3
cube_e = lambda x: cube_d
cube_f = lambda cube_d: cube_d
def cube_g(cube_a):
    def cube_h(cube_a):
        return cube_a ** 3
    return cube_h

print(cube_d == cube_e(2)) #True Statement 1
print(cube_d == cube_f(2)) #False Statement 2
print(cube_g(3)(5) == 5 **3 ) #True Statement 3
print(cube_a== cube_b) #True Statement 4
print(cube_c== cube_d) #False Statement 5

我不明白为什么陈述 1 是正确的,以下是我对其余陈述的理解。

陈述 2:return 前一个函数不同的一个函数和另一个函数

关于语句 3:cube_g(3)(5) 变为 cube_g(3) 调用 cube_h(5) 因此返回 5**3

关于陈述 4:是否正确,因为 functions/code 逐行完全相同?我尝试调高顺序(2 **3 vs 3 **2)并使用 id() 地址不同。

关于声明 5:每个 lambda 函数都有自己的地址?

陈述 1 是正确的,因为在 cube_e 中你只是 returning lambda 函数本身,你没有传递任何参数所以它总是 return cube_d