关于下面的代码片段,我有一些问题/澄清要问。谢谢!
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:是否是因为函数/代码是完全相同的一行一行?我尝试切换顺序(2 **3 vs 3 **2),并且使用id()地址是不同的。
关于报表5:每个lambda函数都有自己的地址?
发布于 2022-01-16 12:19:26
语句1是真的,因为在cube_e中,您只是返回lambda函数本身,而不是传递任何参数,因此它总是返回cube_d。
https://stackoverflow.com/questions/70729895
复制相似问题