[英]I have a simple question about the logic behind this Python code
我是 Python 的初學者,我被困在一個函數代碼中。
def max_of_two( x, y ):
if x > y:
return x
return y
def max_of_three( x, y, z ):
return max_of_two( x, max_of_two( y, z ) )
print(max_of_three(30, 25, 50))
有人可以向我解釋將第一個函數 (max_of_two()) 放在第二個函數 (max_of_three()) 的參數中的邏輯嗎? 我在函數代碼中看到了一個函數,這不是問題,但是我從未在另一個函數的參數中看到一個函數......我很困惑。 我知道代碼的作用,它基本上顯示了更大的數字。 我完全理解第一個功能,但第二個讓我感到困惑......
x = 1
y = 2
z = 3
max_of_two( y, z )
> 3
max_of_two( x, max_of_two( y, z ) )
# is the same as
max_of_two( x, z )
# is the same as
max_of_two( x, 3 )
內部函數的結果用作外部函數的參數,因為首先評估內部函數。
這不是將函數放入參數中。 首先,我建議您了解參數與參數,這是“參數”與“參數”的引用:
老帖子,但換一種說法:參數是傳入的值/變量/引用,參數是函數/塊中使用的接收變量
def max_of_three( x, y, z ):
return max_of_two( x, max_of_two( y, z ) )
例如,(x, y, z) 是 max_of_three 的參數,(y, z) 是傳遞給 max_of_two 的參數
————————————————————————————————————————— 那你應該明白函數調用了。 max_of_two( y, z ) 是函數調用的一個示例,您在其中調用函數 max_of_two,通過進行函數調用,您將獲得與您的參數相對應的返回值。
在這種情況下,當您編寫時:
max_of_two( x, max_of_two( y, z ) )
你先從 max_of_two 中得到對應於 (y, z) 的返回值,並將上面的 x 和返回值傳遞給另一個 max_of_two 函數,然后從 max_of_three 中返回新的返回值。 這相當於:
retval = max_of_two( y, z )
retval2 = max_of_two( x, retval )
return retval2
這就像其他語言中的嵌套 if。 第二個函數有三個參數。 這些被傳遞給第一個成對驗證它們的函數。 如果您想使用單個函數max_of_three(x, y, z)
它應該看起來像帶有中間變量的一系列 if 語句。
def max_of_three(x,y,z):
if x > y:
temp = x
else:
temp = y
if temp > z:
result = temp
else:
result = z
return result
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.