关于比较 == 函数和内存位置的说明
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
关于下面的代码片段,我有些 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