我是 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()) 的引數中的邏輯嗎?我在函式代碼中看到了一個函式,這不是問題,但是我從未在另一個函式的引數中看到一個函式......我很困惑。我知道代碼的作用,它基本上顯示了更大的數字。我完全理解第一個功能,但第二個讓我感到困惑......
uj5u.com熱心網友回復:
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 )
內部函式的結果用作外部函式的引數,因為首先評估內部函式。
uj5u.com熱心網友回復:
這不是將函式放入引數中。首先,我建議您了解引數與引數,這是“引數”與“引數”的參考:
老帖子,但換一種說法:引數是傳入的值/變數/參考,引數是函式/塊中使用的接收變數
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
uj5u.com熱心網友回復:
這就像其他語言中的嵌套 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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480967.html
標籤:Python python-3.x
下一篇:如何回傳名字和姓氏的物件
