關于下面的代碼片段,我有一些問題/澄清要問。謝謝!
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 函式都有自己的地址?
uj5u.com熱心網友回復:
陳述句 1 是正確的,因為cube_e您只是回傳 lambda 函式本身,您沒有傳遞任何引數,因此它將始終回傳cube_d
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/413835.html
標籤:
上一篇:從多個范圍中選擇多個最大值
