簡體   English   中英

我對這個 Python 代碼背后的邏輯有一個簡單的問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM